怎样用C#做一个媒体播放器..可以实现调节左右声道,音量大小和多个音乐文件
mp3,wav等的播放..最好有个显示播放的进度的可以拖放的进度条!!!
比如用delphi做的一些简单的播放器!!!
mp3,wav等的播放..最好有个显示播放的进度的可以拖放的进度条!!!
比如用delphi做的一些简单的播放器!!!
解决方案 »
- 点击文本框如何为空
- 遍历站点地图的方法
- 关于存储数据问题.
- 我是个新手C#入门经典第3版中的一个简单的问题
- 如何在网页上实现类似QQ的聊天功能??
- 如何让ListView可以单击表头进行排序?像windows的资源管理器那样
- 在水晶报表中的交叉表中有"姓名","课程名称","成绩"字段的时候,报表没问题,但是加了一个"学号"字段就不是我想要的格式了,说白了报表专家
- WINCE 5.0下,VS2005 C# PICTUREBOX(插入图片),上的LABEL控件背景如何透明
- 如何才能使自己写的程序不被别人关掉?
- 求助智能客户端更新问题~~~~~~
- !!!!各位帮个忙,看看这个DLL函数怎么了?----------GetDeviceCaps
- 高分求C#设计模式电子书
http://www.5ivb.net/club/dispbbs.asp?boardID=22&ID=27820
http://www.5ivb.net/club/dispbbs.asp?boardID=22&ID=27820直接问斑竹请教好了。
音乐文件格式的编码是比较好搞定的。
C#还没写
要不要看看?
[email protected]
thanks
[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],
~~~~
小弟愚笨至今未在.net里找到MediaPlayer 控件!!!
唉.........
选择添加/移除项---COM组件----找到Windows Media Player
选择添加/移除项---COM组件----找到Windows Media Player没有呀!!是不是要下载安装什么控件??找不到Windows Media Player这一项呀!!
其实使用时候可以参考MSDN呀
一般讲这个的书较少
或者我常用的办法是在已经加入 了组件的项目里
输入AxWMPLib.AxWindowsMediaPlayer.
便会出现该控件的属性了
你选中一个就会有中文提示呀,笨办法的说
现在,打开工具箱,拖一个Button(按钮)到MPlayer表单中,改其名为btn_Open,Text为“打开”。如果你希望这个按钮是图形按钮,还可以为其指定图片(Image)。然后,双击“打开”按钮,此时,系统自动为“打开”按钮创建了一个Click事件处理函数:btn_Open_Click(),我们将在这里写代码装入媒体文件。
以下是btn_Open_Click()的代码:
private void btn_Open_Click(object sender, System.EventArgs e){
String sFileName;
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.InitialDirectory = "c:\\" ;
openDlg.Filter = "All files (*.*)|*.*" ;
openDlg.RestoreDirectory = true ;
if(openDlg.ShowDialog() == DialogResult.OK){
sFileName = openDlg.FileName;
this.Text = sFileName;
axPlayer.FileName = sFileName;
}
}
OpenFileDialog类是System.Windows.Forms的一个子类,它的作用是打开一个对话框供用户选取一个或多个文件并返回文件名。得到文件名后,只要将其赋值给ActiveMovie axPlayer的FileName属性即可。
现在,这个媒体播放机可以用了
2.加入菜单
具体操作及菜单,子菜单的id不写了,我把函数贴出来:
/* 打开菜单项 */
private void menuItem_Open_Click(object sender, System.EventArgs e){
String sFileName;
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.InitialDirectory = "c:\\" ;
openDlg.Filter = "All files (*.*)|*.*" ;
openDlg.RestoreDirectory = true ;
if(openDlg.ShowDialog() == DialogResult.OK){
sFileName = openDlg.FileName;
axPlayer.FileName = sFileName;
}
} /* 开始菜单项 */
private void menuItem_Start_Click(object sender, System.EventArgs e){
if (axPlayer.FileName != "" )
axPlayer.Run();
} /* 暂停菜单项 */
private void menuItem_Pause_Click(object sender, System.EventArgs e){
axPlayer.Pause();
} /* 停止菜单项 */
private void menuItem_Stop_Click(object sender, System.EventArgs e){
axPlayer.Stop();
} /* 退出菜单项 */
private void menuItem_Exit_Click(object sender, System.EventArgs e){
axPlayer.FileName = ""; //先关闭文件
this.Close(); //调用本表单的Close方法退出
}
/* 原始大小菜单项 */
/* Amovie在工程的References中有引用,Amovie.WindowSizeConstants */
/* 为一个表示控件大小的枚举 */
private void menuItem_Origin_Click(object sender, System.EventArgs e){
axPlayer.MovieWindowSize = AMovie.WindowSizeConstants.amvOriginalSize;
} /* 双倍显示菜单项 */
private void menuItem_Double_Click(object sender, System.EventArgs e){
int iWidth, iHeight;
iWidth = axPlayer.Width;
iHeight = axPlayer.Height;
axPlayer.MovieWindowSize = AMovie.WindowSizeConstants.amvDoubleOriginalSize;
this.Width = this.Width + ( axPlayer.Width - iWidth ); //调整表单大小
this.Height = this.Height + ( axPlayer.Height - iHeight );
} /* 音量加大菜单项 */
/* axPlayer的音量调节为一个int型的属性完成,范围为-10000  0,其 */
/* 中-10000声音最小,0最大。 */
private void menuItem_Loud_Click(object sender, System.EventArgs e){
if ( axPlayer.Volume + 500 <= 0 )
axPlayer.Volume += 500;
else
axPlayer.Volume = 0;
} /* 音量放小菜单项 */
private void menuItem_Quiet_Click(object sender, System.EventArgs e) {
if ( axPlayer.Volume - 500 >= -10000 )
axPlayer.Volume -= 500;
else
axPlayer.Volume = -10000;
} /* 消声菜单项 */
private void menuItem_Silent_Click(object sender, System.EventArgs e){
axPlayer.Volume = -10000;
} /* 关于菜单项 */
private void menuItem_About_Click(object sender, System.EventArgs e){
axPlayer.AboutBox();
}
现在,我们着手为MPlayer增加播放列表功能。首先添加控制播放列表读写的类。在Solution Explorer中右击工程MPlayerAddAdd New Item,选取Class类型,取名为PlayList.cs,打开。这样,系统便创建了一个新类PlayList,为其编码如下:
using System;
using System.IO; //IO处理名字空间
namespace MPlayer{
public class PlayList{
private static string sFile; //文件名 public PlayList(){
} public static void SetFileName( string sName ){ //设定文件
sFile = sName;
} //取播放列表,返回一字符串数组
public static void GetFileList( ref string[] sList ){
int i = 0;
for (i=0;i<5;i++) //设初值
sList[i] = "";
//新创建一个文件流,sFile为文件全名,以读方式打开(FileAccess.Read),//如果文件不存在,则创建一个(FileMode,OpenOrCreate)
FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate,
FileAccess.Read);
StreamReader r = new StreamReader(fs); //新建阅读器
// 把读指针指向文件的开头
r.BaseStream.Seek(0, SeekOrigin.Begin);
i=0;
//Peek函数阅读下一个字节,如果<=-1,则说明已至文件尾
while (r.Peek() > -1) {
sList[i] = r.ReadLine(); //一次读取一行
i++;
if (i>=5) //最多只需要5行
break;
}
r.Close(); //关闭阅读器
fs.Close(); //关闭文件流
} public static void SetFileList( string[] sList ) //设置播放列表
{
int i = 0; //以写方式打开文件
for (i=0;i<5;i++) //容错,防止有空字符串出现
if (sList[i] == null)
sList[i] = "";
//以写方式打开文件流,如文件不存在,新建一个
FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate,
FileAccess.Write);
StreamWriter w = new StreamWriter(fs); //创建书写器
// 把写指针指向文件的开头
w.BaseStream.Seek(0, SeekOrigin.Begin);
for (i=0; i< sList.Length; i++ )
w.WriteLine( sList[i] ); //一次写一行
fs.Flush(); //将可能位于缓冲区的内容强制写入文件
w.Close();
fs.Close();
} public static void AddPlayList( string sNew ) //增加一项
{
int i;
string[] sList = new string[5];
GetFileList( ref sList ); //读出当前列表
for (i=4;i>0;i--) //前面四项后移,空出第一项给新加文件
sList[i] = sList[i-1];
sList[0] = sNew;
SetFileList( sList ); //保存至文件
}
}
}
现在,我们已将播放列表的功能全部封装在PlayList类当中,接下来便是修改MPlayer表单,调用PlayList类实现功能。
先为File菜单添加五个菜单项(在Exit项之前),分别取名menuItem_List0 – meuItemList4。然后,为MPlayer类添加播放列表显示函数DisplayPlayList,其代码如下:
private void DisplayPlayList(){
string[] sList = new string[5];
PlayList.GetFileList( ref sList ); //从文件读取当前列表
if ( sList[0].Length > 0 ){ //然后控制5个菜单项的文本及显示
menuItem_List0.Text = sList[0];
menuItem_List0.Visible = true;
}
else
menuItem_List0.Visible = false;
//从menItem_List1 – 3, 省略 if ( sList[4].Length > 0 )
{
menuItem_List4.Text = sList[4];
menuItem_List4.Visible = true;
}
else
menuItem_List4.Visible = false;
}以上工作完成后,系统至少还有三个部分需要修改:
1). 程序进入时要显示播放列表。这很容易,直接在MPlayer类的构造函数中调用播放列表显示函数即可。 public MPlayer(){
InitializeComponent(); //初始化
PlayList.SetFileName( "playlist.txt" );//设定播放列表文件
DisplayPlayList(); //调用播放列表显示函数
}
2). 当打开新文件时,要向播放列表中加入一项并重新调整播放列表的显示。这可以通过修改“打开”菜单项的Click处理方法menuItem_Open_Click做到。
private void menuItem_Open_Click(object sender, System.EventArgs e){
String sFileName;
OpenFileDialog openDlg = new OpenFileDialog();
openDlg.InitialDirectory = "c:\\" ;
openDlg.Filter = "All files (*.*)|*.*" ;
openDlg.RestoreDirectory = true ;
if(openDlg.ShowDialog() == DialogResult.OK){
sFileName = openDlg.FileName;
axPlayer.FileName = sFileName;
//以下部分为新加代码
PlayList.AddPlayList( sFileName ); //增加一项到播放列表
DisplayPlayList(); //调整播放列表显示
}
}
3). 当点击播放列表的某一项时,播放机要打开对应文件。这需要给每个播放列表菜单项添加Click处理函数:
private void menuItem_List0_Click(object sender, System.EventArgs e)
{
axPlayer.FileName = menuItem_List0.Text;
}
//menuItem_List1 – menuItem_List4的代码同上,略现在,简单的编译执行,系统的播放列表功能大功告成
我好好研究,[email protected]多谢了