《第11章 多媒体文件处理程序设计.ppt》由会员分享,可在线阅读,更多相关《第11章 多媒体文件处理程序设计.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程主讲人:第11章 多媒体文件处理程序设计中国铁道出版社中国铁道出版社张思民等主编张思民等主编C+C+语言程序设计语言程序设计第第11章章 多媒体文件处理程序设计多媒体文件处理程序设计本章内容11.1应用音频函数设计声音播放器程序声音文件播放原理11.1.2 高级音频函数11.1.3 简单音频播放程序设计11.2应用MCIWnd设计多媒体播放器程序11.3图像文件显示程序设计11.3.1 显示位图图像的相关函数11.3.2 图像显示程序设计示例11.4 基于.NET基础类库的图像处理程序设计11.4.1 .NET平台结构的CLR11.4.2 .NET基础类库的图像处理类图像处理示例本章小结1
2、1.1应用音频函数设计声应用音频函数设计声音播放器程序音播放器程序11.1声音文件播放原理声音文件播放原理1、媒体控制接口MCI多媒体应用程序使用媒体控制接口(MCI:Media Control Interface)规范发送命令和数据。MCI规范的最基本单元是MCI指令,MCI指令包含命令和数据类型信息。MCI指令组成的MCI数据流传送给Windows操作系统的多媒体系统库mmsystem.dll,并由它解释执行。其工作过程如图11.1所示。2、波形声音文件波形声音是最常用的Windows声音格式之一。该格式记录声音的波形,故只要采样率高、采样字节长、机器速度快,利用该格式记录的声音文件就能够
3、和原声基本一致,质量非常高。波形文件的扩展名是.WAV。3、声音与波形的基本知识11.1.2 高级音频函数高级音频函数1、MessageBeep函数2、PlaySound函数3、sndPlaySound函数4、需要的头文件使用PlaySound和sndPlaySound播放声音文件时,程序要加入Mmsystem.h,并且编译时要链接Winmm.lib库: #include mmsystem.h #pragma comment(lib,winmm.lib)11.1.3 简单音频播放程序设计简单音频播放程序设计【例11-1】应用PlaySound函数设计一个简单的声音播放器。1、界面布局与控件属性
4、设置控件类型控件ID控件属性(非默认)消息处理函数命令按钮IDCANCEL标题为“退出”命令按钮IDC_BUTTON_PLAY标题为“播放”OnBnClickedButtonPlay()命令按钮IDC_BUTTON_STOP标题为“停止”OnBnClickedButtonStop()2、添加头文件 在对话框程序soundPlayDlg.cpp的最前面,添加头文件: #include #pragma comment(lib,“winmm.lib”) /链接winmm.lib库3、代码设计(1) 编写“播放”按钮代码在对话框中双击“播放”按钮,则系统自动转换到对话框程序soundPlayDlg.c
5、pp,编写对应的消息处理函数代码: void CsoundPlayDlg:OnBnClickedButtonPlay( ) CString str=_T(sound.wav); PlaySound (str, NULL, SND_FILENAME | SND_ASYNC); (2) 编写“停止”按钮代码在对话框程序soundPlayDlg.cpp中,编写“停止”按钮对应的消息处理函数OnBnClickedButtonStop( ) 代码:1 void CsoundPlayDlg:OnBnClickedButtonStop()2 3 / 停止播放声音文件4 AfxMessageBox(_T(停止
6、播放声音文件) );5 PlaySound (NULL,NULL,NULL);6 注意:在运行程序时,声音文件sound.wav要和执行文件soundPlay.exe放在同一目录中。11.2应用应用MCIWnd设计多设计多媒体播放器程序媒体播放器程序 MCIWnd是一个控制多媒体设备(视频、音频等设备)的窗口类,可以方便的在应用程序中操作多媒体的播放和录制。MCIWnd不是MFC的基类,该类在头文件vfw.h中定义,设计MCIWnd程序时,源文件中需要包含该头文件,并且要把vfw32.lib加入到应用程序中。 、MCIWnd子窗口的创建子窗口的创建 MCIWnd窗口是媒体播放器应用程序的子窗口
7、,要在父窗口中创建MCIWnd子窗口,要可使用MCIWndCreate函数。MCIWndCreate函数的原型为:HWND MCIWndCreate(HWND hwndParent,/父窗口句柄HINSTANCE hInstance,/应用程序的实例句柄DWORD dwStyle,/显示风格LPSTR szFile/多媒体文件名); 返回的HWND可以保存下来,供后面的其他功能使用。 该子窗口会占据父窗口一定空间,带有播放按钮、进度条等。2、MCIWnd的函数的函数MCIWnd窗口类定义了很多操作函数,现将常用的成员函数列于表11-3中。MCIWndOpen(hwnd, sz, f) 打开多媒
8、体文件MCIWndOpenDialog(hwnd) 打开MCIWnd窗口的选项对话框MCIWndClose(hwnd) 结束多媒体文件(MCIWnd窗口仍在)MCIWndPlay(hwnd) 播放MCIWndStop(hwnd)停止播放MCIWndPause(hwnd)暂停播放MCIWndHome(hwnd)到文件开始MCIWndEnd(hwnd) 到文件结束MCIWndDestroy(hwnd)结束MCIWnd(关闭MCIWnd窗口)【例【例11-2】应用】应用MCIWnd类设计一个多媒体类设计一个多媒体播放器。播放器。 1、界面布局与控件属性设置、界面布局与控件属性设置 利用利用MFC的向
9、导选择的向导选择“MFC应用程序应用程序”,按照图,按照图11.3 所所示布局样式,创建对话框应用程序,项目名称为示布局样式,创建对话框应用程序,项目名称为“mPlay”。在对话框中添加。在对话框中添加5个命令按钮和个命令按钮和1个群组框。个群组框。2、控件设置、控件设置3、代码设计、代码设计(1) 添加头文件添加头文件在对话框程序在对话框程序mPlayDlg.cpp的最前面,添加头文件:的最前面,添加头文件: #include #pragma comment(lib,vfw32.lib) /链接链接vfw32.lib库库(2) 编写编写“打开文件打开文件”按钮代码按钮代码(3) 编写编写“播
10、放播放”按钮代码按钮代码(4) 编写编写“停止停止”按钮代码按钮代码(5) 编写编写“关闭关闭”按钮代码按钮代码11.3图像文件显示程序设计图像文件显示程序设计11.3.1 显示位图图像的相关函数显示位图图像的相关函数 位图是计算机处理图像的一种最常见的图像格式。位图图像文件的扩展名为.BMP。位图图像由像素点组成,每个像素用颜色位表示颜色质量,4位表示16种颜色,8位表示256种颜色,16位表示65,536种颜色,而24位表示16,777,216种颜色。1、图像装载函数、图像装载函数LoadImage LoadImage函数可以装载位图图像或光标图像 2、指定设备上下文环境函数、指定设备上下
11、文环境函数CreateCompatibleDC CreateCompatibleDC函数为创建一个与指定设备兼容的内存设备上下文环境(DC)3、获得图形对象的信息函数、获得图形对象的信息函数GetObject GetObject函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区4、绘制图像函数、绘制图像函数BitBlt BitBlt函数在设备上完成图像绘制,将图像传送到到目标设备上显示【例【例11-3】设计一个如图】设计一个如图11.4所示的显示位图图像所示的显示位图图像应用程序。应用程序。设计步骤如下:设计步骤如下:1、创建项目、创
12、建项目 应用MFC向导,选择“单文档界面”项,创建一个单文档的应用程序,项目名称为bmpPlay。2、修改菜单项并编写单击菜单项的响应事件函数、修改菜单项并编写单击菜单项的响应事件函数(1)删除原有的“文件”菜单下除了“退出”之外的所有子项。(2)新增“显示图像”项,并在其下面增加“打开图像文件”子项。 (3)右击“打开图像文件”子项,在弹出菜单项中选择“添加事件处理程序”项。在“事件处理程序向导”对话框中,【消息类型】选择“COMMAND”项,【类列表】选择“CbmpPlayView”项。再点击“添加编辑”按钮。(4)编写单击菜单“打开图像文件”子项的响应事件函数 3、设置全局变量、设置全局
13、变量4、修改、修改OnDraw函数函数11.4 基于基于.NET基础类库的基础类库的图像处理程序设计图像处理程序设计11.4.1 .NET平台结构的平台结构的CLR 在 Visual Studio .NET中,C+ 语言得到进一步扩展,Visual C+支持 .NET Framework CLR(公共语言运行库)。 公共语言运行时(Common Language Runtiome,CLR)被称为下一代Windows服务运行时。它是建立在操作系统上的一个虚拟环境,主要的任务是管理代码的运行。CLR现在支持几十种编程语言,并把它们编译成一种中间语言(Intermediate Langeoage,I
14、L)代码的形式执行。这种生成的中间代码在.NET中被称为托管代码,因为这样的代码是直接运行在CLR上的,所以具有与平台无关的特点。Visual Studio .NET 平台结构如图11.5所示。 .NET基础类库的图像处理类基础类库的图像处理类1、图像处理、图像处理 图像处理就是对图像的各个像素值按某种算法进行变换,然后按变换后的新像素值重新显示,形成一幅新的图像。2、Bitmap 类类 Bitmap 类是一个用于对由像素数据定义的图像进行处理的类。Bitmap 类提供了许多图像处理的方法。3、Color 结构结构4、Image类类 Image类是一个显示图像的控件,Image 类能够加载的图
15、像有 .bmp、.gif、.ico、.jpg和.png等类型。【11-4】应用】应用Image类编写一个显示图像的程序。类编写一个显示图像的程序。如图如图11.6所示。所示。设计步骤如下:设计步骤如下:(1)在)在Visual Studio 新建项目。新建项目。 在“项目类型”窗格中,选择“Visual C+”节点中的“CLR”,然后在“模板”窗格中选择“Windows 窗体应用程序”。 项目的名称为ImgPlay。(2)在)在Windows 窗体设计器中显示所创建项目的窗体设计器中显示所创建项目的“Form1”。 在Form中添加1个“图像框”工具 、1个“打开文件对话框”控件、1个命令按钮
16、。(3)控件设置)控件设置(4)代码设计)代码设计【11-5】编写一个完成复制图像功能的图像处理应】编写一个完成复制图像功能的图像处理应用程序。如图用程序。如图11.7所示。所示。设计步骤如下:设计步骤如下:(1)在)在Visual Studio 新建项目。新建项目。在“项目类型”窗格中,选择“Visual C+”节点中的“CLR”,然后在“模板”窗格中选择“Windows 窗体应用程序”。 项目的名称为copyImg。(2)在)在Windows 窗体设计器中显示所创建项目的窗体设计器中显示所创建项目的“Form1”。在Form中添加2个“图像框”工具 和1个命令按钮。(3)控件设置)控件设置
17、各个控件的属性及变量设置见表11-9。(4)代码设计)代码设计【11-6】编写一个具有图像反色功能的图像处理程】编写一个具有图像反色功能的图像处理程序。如图序。如图11.8所示。所示。设计步骤如下:设计步骤如下:(1)在)在Visual Studio 新建项目。新建项目。(2)在)在Windows 窗体设计器中显示所创建项目的窗体设计器中显示所创建项目的“Form1”。(3)控件设置)控件设置(4)反色处理算法设计)反色处理算法设计 设R1、G1、B1分别为图像处理前像素f(i, j)的红、绿、蓝分量值,R2、G2、B2为图像处理反色处理后的红、绿、蓝分量值。则反色处理的算法如下:R2 = 255 R1G2 = 255 G1B2 = 255 B1 (5)代码设计)代码设计