用C#怎样做一个像QQ音乐一样的播放器呢,不需要那么多功能,只要能实现简单的搜歌,播放本地音乐功能即可,请高手指教..
解决方案 »
- picturebox不能显示滚动条,求高手指教!
- ASP.net中C#里如何能够读取数据库?
- 请教自定义属性怎么做?
- ASP.net如何批量导出反编译文件?
- 新手问题,请问如何控制TEXTBOX只能输入中文吖?
- 请教 “用户登陆”的问题(怎样把用户在登录框的输入 和 数据库用户表中的信息 进行比较)?
- 请教大侠,在vs.net2003下,C#应用于.aspx中,datagrid的问题
- 求简单winform资料开发资料c#的,就是简单的各个控件的运用介绍,我做webform的,对winform不熟悉;谢谢!!
- C#--WinForm调用COM实现语音功能
- vs2010(framework3.5,在64bit WIN7下)开发的WINFORM程序,在WIN XP下运行时,必须设置兼容模式的问题
- 急急急、、。正则匹配 中文 Unicode
- 如何让C#的DataGridView的 内容 靠右显示(因为金额靠右容易区分位数-个十百千万)
,不过要用到Flash中的编程,不过简单多了,
优酷、酷六网上有相关视频可以看着学学
{
public partial class SWFPlayer : Form
{
public SWFPlayer()
{
InitializeComponent(); axShockwaveFlash1.Size = new Size(this.Width, this.Height - 130);
axShockwaveFlash1.Movie = ""; lblReadyState.Location = new Point(0, this.Height - 125);
lblScale.Location = new Point(this.Width - lblScale.Width - 10, this.Height - 125);
trackBar1.Location = new Point(0, this.Height - 100);
} private void SWFPlayer_Load(object sender, EventArgs e)
{
if (axShockwaveFlash1.ReadyState == 4)
{
lblReadyState.Text = "完成";
lblScale.Text = "0/" + axShockwaveFlash1.TotalFrames.ToString();
btnPlay.Enabled = true;
trackBar1.Enabled = true;
}
} #region ShockwaveFlash 控件加载文件信息
private void axShockwaveFlash1_OnReadyStateChange(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_OnReadyStateChangeEvent e)
{
switch (axShockwaveFlash1.ReadyState)
{
case 0:
lblReadyState.Text = "正在载入......";
break;
case 1:
lblReadyState.Text = "未初始化";
break;
case 2:
lblReadyState.Text = "已载入";
break;
case 3:
lblReadyState.Text = "正在交互......";
break;
case 4:
lblReadyState.Text = "完成";
lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
trackBar1.Maximum = axShockwaveFlash1.TotalFrames;
btnPlay.Enabled = true;
btnBack.Enabled = true;
btnForward.Enabled = true;
trackBar1.Enabled = true;
break;
}
} private void axShockwaveFlash1_OnProgress(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_OnProgressEvent e)
{
lblReadyState.Text = "已下载 " + axShockwaveFlash1.PercentLoaded() + "%......";
}
#endregion #region 功能键(播放、后退、前进)
//播放
private void btnPlay_Click(object sender, EventArgs e)
{
if (axShockwaveFlash1.Playing)
{
axShockwaveFlash1.Stop();
btnPlay.Text = "►";
lblReadyState.Text = "暂停";
timer1.Stop();
}
else
{
axShockwaveFlash1.Play();
btnPlay.Text = "■";
lblReadyState.Text = "播放";
timer1.Start();
}
}
//后退
private void btnBack_Click(object sender, EventArgs e)
{
//axShockwaveFlash1.Back(); //此方法只能后退一帧
axShockwaveFlash1.GotoFrame(axShockwaveFlash1.FrameNum - 20);
btnPlay_Click(null, null); //播放
}
//前进
private void btnForward_Click(object sender, EventArgs e)
{
//axShockwaveFlash1.Forward(); //前进一帧
axShockwaveFlash1.GotoFrame(axShockwaveFlash1.FrameNum + 20);
btnPlay_Click(null, null); //播放
}
#endregion #region 暂无内容
private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
{
//XmlDocument doc = new XmlDocument();
//doc.LoadXml(e.request); //XmlNodeList list = doc.GetElementsByTagName("arguments");
//int width = Convert.ToInt32(list[0].FirstChild.InnerText);
//int height = Convert.ToInt32(list[0].ChildNodes[1].InnerText);
//if (width > axShockwaveFlash1.Width)
//{
// this.Width += width - axShockwaveFlash1.Width;
//}
//if (height > axShockwaveFlash1.Height)
//{
// this.Height += height - axShockwaveFlash1.Height;
//}
} private void axShockwaveFlash1_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
{ }
#endregion //打开本地文件
private void tsmiOpenFile_Click(object sender, EventArgs e)
{
DialogResult dr = openFile.ShowDialog();
if (dr == DialogResult.OK)
{
axShockwaveFlash1.Movie = openFile.FileName;
//axShockwaveFlash1.CallFunction("<invoke name=\"loadAndPlayVideo\" returntype=\"xml\"><arguments><string>" + openFile.FileName + "</string></arguments></invoke>");
}
} #region 文件拖放
private void FlashControl_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
} private void FlashControl_DragDrop(object sender, DragEventArgs e)
{
string swf = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); if (Path.GetExtension(swf).ToLower() == ".swf")
{
axShockwaveFlash1.Movie = swf;
}
else
{
MessageBox.Show("文件必须是 swf 格式!");
}
}
#endregion //计数器
private void timer1_Tick(object sender, EventArgs e)
{
lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
trackBar1.Value = axShockwaveFlash1.FrameNum;
} //拖动 滑动条 滑块
private void trackBar1_Scroll(object sender, EventArgs e)
{
axShockwaveFlash1.GotoFrame(trackBar1.Value);
lblScale.Text = axShockwaveFlash1.FrameNum + "/" + axShockwaveFlash1.TotalFrames.ToString();
btnPlay_Click(null, null); //播放
} }
}
string sample = @"D:\4Music\Adele - 21(Deluxe Edition)\01 - Rolling in the Deep.mp3";
var graphBuilder = new FilterGraph();
var mediaControl = graphBuilder as IMediaControl;
mediaControl.RenderFile(sample);
mediaControl.Run();Try the code in Console or any project.
http://nonocast.cn/?p=2737