首页 技术 正文
技术 2022年11月14日
0 收藏 681 点赞 2,188 浏览 7268 个字

1. C#播放器控件常用的方法介绍

右击工具箱->选择项(I)… -> 显示”选择工具箱项” -> COM组件 -> Windows Media Player   wmp.dll 添加

[基本属性]  
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible(不计大小写)
playState:integer; 播放状态。这个属性改变时同时引发PlayStateChange事件与StateChange事件。取值范围为枚举型:WMPLib.WMPPlayState,它的成员如下:
  wmppsUndefined = 0;   //未知状态
  wmppsStopped = 1;    //播放停止
  wmppsPaused = 2;     //播放暂停
  wmppsPlaying = 3;     //正在播放
  wmppsScanForward = 4;   //向前搜索
  wmppsScanReverse = 5;   //向后搜索
  wmppsBuffering = 6;     //正在缓冲
  wmppsWaiting = 7;      //正在等待流开始
  wmppsMediaEnded = 8;    //播放流已结束
  wmppsTransitioning = 9;    //准备新的媒体文件
  wmppsReady = 10;      //播放准备就绪
  wmppsReconnecting = 11;   //尝试重新连接流媒体数据
  wmppsLast = 12;       //上一次状态,状态没有改变
  在PlayStateChange中写代码可以防止播放rmvb等非默认类型的问题(用wmppsReady)。
  enableContextMenu:Boolean;    启用/禁用右键菜单
  fullScreen:boolean;         是否全屏显示  //播放器基本控制
  Ctlcontrols.play; 播放
  Ctlcontrols.pause; 暂停
  Ctlcontrols.stop; 停止
  Ctlcontrols.currentPosition:double; 当前进度
  Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如“00:23”
  Ctlcontrols.fastForward; 快进
  Ctlcontrols.fastReverse; 快退
  Ctlcontrols.next; 下一曲
  Ctlcontrols.previous; 上一曲  [settings] wmp.settings //播放器基本设置
  settings.volume:integer; 音量,0-100
  settings.autoStart:Boolean; 是否自动播放
  settings.mute:Boolean; 是否静音
  settings.playCount:integer; 播放次数
  //顺序播放
  wmp.settings.setMode("shuffle", False)
  //随机播放
  wmp.settings.setMode("shuffle", True)
  //循环播放
  wmp.settings.setMode("loop", True)[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.duration:double; 媒体总长度
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述, "Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")

基本设置实例:

axWindowsMediaPlayer1.windowlessVideo = false;   //设为false后双击屏幕可以全屏
axWindowsMediaPlayer1.fullScreen = true; //设播放器全屏播放axWindowsMediaPlayer1.URL = @"mms://192.168.0.102/vod/jingwei.wma";//播放资源axWindowsMediaPlayer1.Ctlcontrols.play(); //播放
axWindowsMediaPlayer1.Ctlcontrols.stop(); //停止
axWindowsMediaPlayer1.Ctlcontrols.pause(); //暂停axWindowsMediaPlayer1.settings.autoStart = true; //自动播放axWindowsMediaPlayer1.settings.mute = false; //静音
axWindowsMediaPlayer1.settings.volume = 100; // 音量 int 0 ~ 100 100 是最大音量axWindowsMediaPlayer1.currentMedia.duration.ToString();//影片长度
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 30; //当前的播放位置 doubleaxWindowsMediaPlayer1.currentMedia.getItemInfo("Title");//标题
axWindowsMediaPlayer1.currentMedia.getItemInfo("Author");//作者

全屏控制实例代码:

using System.IO;
using WMPLib; public videoPlay()
{
InitializeComponent(); //全屏设置及隐藏鼠标
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = FormBorderStyle.None;
//Cursor.Hide();
//播放器全屏
Rectangle screenSize = System.Windows.Forms.SystemInformation.VirtualScreen;//获取屏幕的宽和高
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Size = new System.Drawing.Size(screenSize.Width,screenSize.Height);
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(screenSize.Width, screenSize.Height);
//播放器设置
axWindowsMediaPlayer1.uiMode = "None";//播放器样式
axWindowsMediaPlayer1.stretchToFit = true;//非全屏状态时是否伸展到最佳大小
axWindowsMediaPlayer1.enableContextMenu = false;//禁用播放器右键菜单 } private IWMPPlaylist videoList;//创建播放列表
private bool ifLoop = true;//视频是否循环 //设置是否循环播放
public bool IfLoop
{
get { return ifLoop; }
set { ifLoop = value; }
} //播放状态改变时发生
private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
//判断视频是否已停止播放
if ((int)axWindowsMediaPlayer1.playState == 1)
{
//停顿2秒钟再重新播放
//System.Threading.Thread.Sleep(2000);
//重新播放
//axWindowsMediaPlayer1.Ctlcontrols.play();
}
}
//播放
public void videoStart()
{
axWindowsMediaPlayer1.Ctlcontrols.play();
}
//列表播放
public void videoListStart()
{
videoPlayList();//重新获取播放列表
axWindowsMediaPlayer1.Ctlcontrols.play();
}
//暂停
public void videoPause()
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
//重播
public void videoReplay()
{
videoStop();
videoStart();
}
//列表重播
public void videoListReplay()
{
axWindowsMediaPlayer1.currentPlaylist = videoList;//重新载入播放列表
videoStart();
}
//停止播放
public void videoStop()
{
//axWindowsMediaPlayer1.currentPlaylist.clear();//清除列表
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
//视频静音
public void videoMute(bool t)
{
axWindowsMediaPlayer1.settings.mute = t;
}
//播放下一个视频
public void videoNext()
{
//判断当前所播放的视频是否是列表的最后一个
if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[axWindowsMediaPlayer1.currentPlaylist.count - 1].name)
{
}
else
{
axWindowsMediaPlayer1.Ctlcontrols.next();//播放下一个
}
}
//播放上一个媒体
public void videoPrevious()
{ //判断当前所播放的视频是否是列表的第一个
if (axWindowsMediaPlayer1.currentMedia.name == axWindowsMediaPlayer1.currentPlaylist.Item[0].name)
{
}
else
{
axWindowsMediaPlayer1.Ctlcontrols.previous();//播放上一个
}
} //获取播放类表及初始化
public void videoPlayList()
{
videoList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("one");//创建播放列表
string path = @".\data\video";//媒体路径
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileSystemInfo fsi in dir.GetFileSystemInfos())
{
if (fsi is FileInfo)
{
FileInfo fi = (FileInfo)fsi;
videoList.appendItem(axWindowsMediaPlayer1.newMedia(fi.FullName));
}
}
axWindowsMediaPlayer1.currentPlaylist = videoList;//查找到视频、播放类表
axWindowsMediaPlayer1.settings.setMode("loop", ifLoop);//设置类表循环播放
}

2. C#调用WMP播放一个文件夹的文件

//播放列表
WMPLib.IWMPPlaylist playlist = null;
playlist = MediaPlayer.playlistCollection.newPlaylist("palylist");//播放列表添加项 , 而且从刚添加的项开始播放playlist.appendItem(MediaPlayer.newItem(file_address));
MediaPlayer.currentPlaylist = playlist;
//oldCount是添加之前的数量,添加之后playlist.Item[oldCount]即为添加的第一项
MediaPlayer.Ctlcontrols.currentItem = playlist.Item[oldCount];PlayMusic()
//当前播放项 属性
//title:标题 , 是mp3文件里面内嵌的信息SourceURL : 文件地址
MediaPlayer.currentMedia.getItemInfo("title");当前项的总时间:
MediaPlayer.currentMedia.duration //double类型
MediaPlayer.currentMedia.durationString //string类型,是格式化好的几分几秒当前进度:
MediaPlayer.Ctlcontrol.currentPosition //double类型
MediaPlayer.Ctlcontrol.currentPositionString //string类型,是格式化好的几分几秒//mediaPlayer控制播放的,全在Ctlcontrol里面

3. C# winform从右下角弹窗

/// <summary>
/// 窗体动画函数 注意:要引用System.Runtime.InteropServices;
/// </summary>
/// <param name="hwnd">指定产生动画的窗口的句柄</param>
/// <param name="dwTime">指定动画持续的时间</param>
/// <param name="dwFlags">指定动画类型,可以是一个或多个标志的组合。</param>
/// <returns></returns>
[DllImport("user32")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
//下面是可用的常量,根据不同的动画效果声明自己需要的
private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志
private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展
private const int AW_HIDE = 0x10000;//隐藏窗口
private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志
private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略
private const int AW_BLEND = 0x80000;//使用淡入淡出效果 private void FrmMsg_Load(object sender, EventArgs e)
{
int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width;
int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;
this.Location = new Point(x, y);//设置窗体在屏幕右下角显示
AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE);
}
private void FrmMsg_FormClosing(object sender, FormClosingEventArgs e)
{
AnimateWindow(this.Handle, 1000, AW_BLEND | AW_HIDE);
}

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,984
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,501
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,345
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,128
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,763
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,839