多媒体编程课程设计.docx
- 格式:docx
- 大小:1.15 MB
- 文档页数:61
南京工程学院
多媒体编程基础课程
综合作业说明书
题 目 多媒体处理综合应用设计
班 级
学 生 姓 名 刘土豪
学 号 2021003
2013 年 06 月 07 日
一、 程序功能与设计思路
设计目标与具有的功能:
必须含有文字处理、绘图、图像、音频视频四部分内容各3种以上功能,界面及应用方法自己根据软件的特色综合考虑,每位同学必须自己设计一个动画标志,放在【帮助】对话框中,或者窗口界面上
设计思路:
1) 图形处理:
可以选择直线,矩形,椭圆,涂鸦进行绘画
可以选择线的形状:实线,虚线,点线
可以改变线条的颜色
可以改变线条的宽度
可以进行多边形填充颜色并可以改变颜色
2) 图片处理:
可以打开BMP格式的图片
可以进行锐化,浮雕,反色等图片处理效果
可以显示鼠标在图片上坐标处的颜色值和颜色
3) 文字处理:
实现至少少三种文字特效,比如:文字渐变,旋转体,3D,文字倾斜,下划线,空心字等
4) 音乐播放器:
可以打开mp3,wma,wvi格式的歌曲
可以控制音乐的播放、暂停、停止
可以指定播放当前音乐的上一个或下一个音乐
在列表中随意选择要播放的音乐
在播放时,可以获取并显示当前播放音乐的信息
可以调节音乐的音量
5)视频播放器:
可以打开MP3,WMA,WMV,AVI,RM,RMVB,FLV,MP4等格式 在列表中随意选择要播放的媒体文件
控制媒体文件的播放、暂停、停止、快进、快退
指定播放当前文件的上一个或下一个媒体文件
在播放时,可以获取并显示当前播放媒体的文件信息
播放模式可以进行进行选择
可以对播放列表或列表中的选项进行删除操作
二、 相关原理知识介绍
(1) 图形处理:画笔和画刷是绘图中最基本的元素
1.画笔(Pen):用于在设备环境中绘制直线,曲线和多边形边框。
创建画笔:
(1) CPen();
(2) CPen(int nPenStyle, int nWidth, COLORREF crColor);
nPenStyle:画笔的样式PS_SOLID 创建一个实线画笔,PS_DASH 创建一个虚线画笔,PS_DOT 创建一个点线画笔
nWidth:画笔的宽度
crColor:画笔的颜色(颜色用RGB值来描述)
2.画刷(CBrush):常用于填充个区域诸如多边形,椭圆和路径等图形内部区域
创建画刷:
(1) CreateSolidBrush 用指定的颜色初始化画刷
(2) CreateHatchBrush 用指定的阴影线初始化画刷。
(3) CreateBrushIndirect用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷。
3.画直线:LineTo(int x,int y)
画椭圆:Ellipse(int x1,int y1, int x2,int y2)
画矩形:Rectangle(int x1,int y1,int x2,int y2)//x1,y1为边界矩形左上角的坐标,x2,y2为边界矩形右下角的坐标 (2) 图片处理:
BitBlt,用于从源设备中复制位图到目标设备中,
BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int
nXSrc,int nYSrc,DWORD dwRop)
hdcDest:指向目标设备环境的句柄。
nXDest:指定目标矩形区域左上角的X轴逻辑坐标。
nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。
nWidth:指定源和目标矩形区域的逻辑宽度。
nHeight:指定源和目标矩形区域的逻辑高度。
hdcSrc:指向源设备环境的句柄。
nXSrc:指定源矩形区域左上角的X轴逻辑坐标。
nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。
dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。
(3) 文字处理:
输出文字Textout():用当前字体在指定位置处写一个字符串
TextOut(int x,int y,Cstring string):文本起点的x坐标和y坐标以及要绘制的字符串
创建字体LOGFONT{ }结构
(4) 音频播放器:
使用VC++6.0强大的MFC、AppWizard、Class Wizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用VC++6.0自带的一个ActiveX控件——Windows Media Player控件,建立自己的多媒体播放器
三、 界面设计和功能实现
1. 主界面设计结构框架图:
2. 打开VC 6.0,新建MFC工程,基于对话框,名称为多媒体课设
主界面
图形处理 图片处理 文字效果 音乐播放器 音频播放器
3. 向主窗口拖一个Tab控件,并调整大小使之占据2/3主窗口大小,并为Tab添加类向导,
添加IDC_TAB1的变量:m_tab
完成后在 “多媒体课设Dlg.cpp”中的OnInitDialog添加如下代码:
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_tab.InsertItem(0,"图形处理");
m_tab.InsertItem(1,"图片处理");
m_tab.InsertItem(2,"文字处理");
m_tab.InsertItem(3,"音乐播放");
m_tab.InsertItem(4,"音频播放");
RECT rc;
m_tab.GetClientRect(&rc);
m_draw.Create(IDD_DRAW_DIALOG,&m_tab);
m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);
m_picture.Create(IDD_PICTURE_DIALOG,&m_tab);
m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_music.Create(IDD_MUSIC_DIALOG,&m_tab);
m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_movie.Create(IDD_MOVIE_DIALOG,&m_tab);
m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_word.Create(IDD_WORD_DIALOG,&m_tab);
m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
return TRUE; // return TRUE unless you set the focus to a control
在添加类向导OnSelchangeTab1()中添加代码:
void CMyDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CRect rc;
m_tab.GetClientRect(&rc);
switch(m_tab.GetCurSel())
{
case 0:
m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);
break;
case 1:
m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);
break;
case 2:
m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);
m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);