Windows软件开发项目实训 音视频播放器的设计与实现
第5章 详细设计
5.1主窗体的布局设计(我的模块)
主窗体的布局我们使用的是两个SplitContainer控件。(见3.2软件设计分析) 首先,splitContainer1把窗体分为两部分,把播放列表放在splitContainer1.Panel2。
其次,在
splitContainer1.Panel1
中添加
splitContainer2
把
splitContainer1 .Panel1分成两部分,在splitContainer2.Panel2中放入控制按钮栏,在splitContainer2.Panel1中添加windows media player控件。
使用SplitContainer控件主要是实现有好的界面和隐藏播放列表和控制按钮功能。
5.2菜单栏(我的模块) 添加MenuStrip控件
主菜单的各菜单及下拉菜单设计见下图(7)图(8)图(9)
图(7)主菜单文件菜单及其下拉菜单
图(8)主菜单播放菜单及其下拉菜单
软件3081·701开发组 第 8 页 共 26 页
Windows软件开发项目实训 音视频播放器的设计与实现
图(9)主菜单皮肤切换菜单及其下拉菜单
5.3控制按钮栏
关于按钮控制栏的设计使用的是ToolStrip控件,如下图(10)
播放/暂停 停止 快退 快进 播放模式切换 全屏切换 上一曲 下一曲 静音 音量控制 图(10)控制按钮菜单
隐藏和显示播放列表
5.4播放列表
播放列表的设计使用的是ToolStrip和ListBox控件,以及列表中的右键菜单ContextMenuStrip控件,如下图(11)
toopStrip2
添加文件夹 添加文件 从列表删除所选 清空列表 ListBox
图(11)播放列表
软件3081·701开发组 第 9 页 共 26 页
Windows软件开发项目实训 音视频播放器的设计与实现
第6章 代码设计
6.1菜单栏菜单的事件代码(我的模块) 1)打开文件 //打开文件
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) {
OpenFileDialog ofd = new OpenFileDialog(); //打开文件 ofd.Filter = \所有文件.*|*.*|Wmv视频.wmv|*.wmv|歌曲.mp3|*.mp3|歌曲.wma|*.wma|文件.avi|*.avi\ ofd.FilterIndex = 1;
if (ofd.ShowDialog() == DialogResult.OK) {
FileInfo fi = new FileInfo(ofd.FileName); int i;
for (i = 0; i < lbxPlayList.Items.Count; i++) {
if (fi.Name == lbxPlayList.Items[i].ToString()) break; }
if (i == lbxPlayList.Items.Count) {
this.lbxPlayList.Items.Add(fi.Name);
axWindowsMediaPlayer1.currentPlaylist.insertItem(axWindowsMediaPlayer1.currentPlaylist.count, axWindowsMediaPlayer1.newMedia(ofd.FileName)); } } } 2)打开文件夹
//打开文件夹里的文件
private void 打开文件夹ToolStripMenuItem_Click(object sender, EventArgs e) {
FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == DialogResult.OK)
软件3081·701开发组
第 10 页 共 26 页
Windows软件开发项目实训 音视频播放器的设计与实现
{
string path_dir = fbd.SelectedPath;
foreach (string filename in Directory.GetFiles(path_dir)) {
FileInfo fi = new FileInfo(filename);
if (fi.Extension == \|| fi.Extension == \|| fi.Extension == \ { int i;
for (i = 0; i < lbxPlayList.Items.Count; i++) {
if (fi.Name == lbxPlayList.Items[i].ToString()) break; }
if (i == lbxPlayList.Items.Count) {
lbxPlayList.Items.Add(fi.Name);
axWindowsMediaPlayer1.currentPlaylist.insertItem(axWindowsMediaPlayer1.currentPlaylist.count, axWindowsMediaPlayer1.newMedia(filename)); } } } } } 3)退出
private void 退出XToolStripMenuItem_Click(object sender, EventArgs e) {
this.Close(); } 4)播放/暂停 //播放暂停 bool b = true;
private void 播放暂停ToolStripMenuItem_Click(object sender, EventArgs e) {
软件3081·701开发组 第 11 页 共 26 页
Windows软件开发项目实训 音视频播放器的设计与实现
if (b) {
axWindowsMediaPlayer1.Ctlcontrols.pause(); //暂停 toolStripButton1.Image = Player.Properties.Resources.未标题_110;
b = false; } else {
axWindowsMediaPlayer1.Ctlcontrols.play(); //播放 toolStripButton1.Image = Player.Properties.Resources.未标题_2; b = true; } } 5)停止
private void 停止ToolStripMenuItem_Click(object sender, EventArgs e) {
axWindowsMediaPlayer1.Ctlcontrols.stop(); //停止 } 6)上一曲 //上一曲
private void 上一曲ToolStripMenuItem_Click(object sender, EventArgs e) {
if (this.lbxPlayList.SelectedIndex > 0) {
this.axWindowsMediaPlayer1.Ctlcontrols.previous();
this.lbxPlayList.SelectedIndex = this.lbxPlayList.SelectedIndex - 1;
} else {
axWindowsMediaPlayer1.Ctlcontrols.playItem(axWindowsMediaPlayer1.currentPlaylist.get_Item(lbxPlayList.Items.Count - 1));
软件3081·701开发组 第 12 页 共 26 页