欢迎来到天天文库
浏览记录
ID:50307548
大小:1.00 MB
页数:46页
时间:2020-03-07
《Visual C++大学教程 教学课件 作者 冯博琴 第11章 多媒体技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第11章多媒体技术11.1图像处理技术11.1.1位图文件结构分析位图(BMP)文件是Windows采用的图形文件格式,它常以bmp、dib或rle作为扩展名。位图文件最大的特点是没有经过压缩,它将图像中的每个像素的颜色值进行存储。1.位图文件头位图文件头可以用下面的数据结构来描述:typedefstructtagBITMAPFILEHEADER{//bmfhWORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;}BITMAPFILEHEADER;2.位图信息头位图信息头也可以用下面的数
2、据结构来描述:typedefstructtagBITMAPINFOHEADER{//bmihDWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes;WORDbiBitCount;DWORDbiCompression;DWORDbiSizeImage;LONGbiXPelsPerMeter;LONGbiYPelsPerMeter;DWORDbiClrUsed;DWORDbiClrImportant;}BITMAPINFOHEADER;3.彩色表彩色表用下面的数据结构描述:typedefstructtagRGBQUAD{//rgbq
3、BYTErgbBlue;BYTErgbGreen;BYTErgbRed;BYTErgbReserved;}RGBQUAD;4.位图数据紧跟在彩色表之后的是图像数据字节阵列。图像的每行由表示图像像素的连续的字节组成,每一行的字节数取决于图像的颜色数目和用像素表示的图像宽度。11.1.2将位图文件绘制成对话框背景StretchBlt函数用位图的指定矩形部分和设备环境中指定的矩形区域贴图,如果位图的矩形部分同当前设备环境部分大小不一致,则将位图进行压缩或放大。语法:BOOLStretchBlt(intx,inty,intnWidth,intnHeight,CDC*pSrcDC,
4、intxSrc,intySrc,intnSrcWidth,intnSrcHeight,DWORDdwRop);11.1.3将设备上下文转换为位图位图文件由位图文件头、位图信息头、调色板和位图数据组成。位图文件头是固定的结构,位图信息头及调色板可以通过CBitmap的GetBitmap方法获得,而对于位图数据可以通过GetDIBits方法获得,最后通过CFile对象创建位图文件,并将前面得到的数据写入文件中。11.1.4在程序中显示JPEG与GIF文件可以通过IPicture接口来显示JPEG和GIF图像。首先利用CFile对象从文件中读取图像数据到缓冲区中,然后调用Cre
5、ateStreamOnHGlobal方法在缓冲区中创建一个流对象,接着调用OleLoadPicture方法从流中加载图像信息到IPicture中,最后调用IPicture的Render方法绘制图像。11.2音频处理技术WAVE格式的音频文件是比较常用的音频文件类型。11.2.1播放应用程序中的WAVE资源在播放WAVE资源时,首先调用FindResource函数搜索指定的音频资源,然后调用LoadResource函数装载资源到存储器,再调用LockResource函数锁定资源句柄,使用sndPlaySound函数播放WAVE资源,最后调用FreeResource函数释放资
6、源句柄。11.2.2播放WAVE文件WAVE音频文件是比较常用的音频文件,对于音频的播放可以有多种方法。11.2.3音量大小控制使用MCI(TheMediaControlInterface)接口可以进行音量控制。图11.6音量控制程序(1)mixerOpen函数用于打开指定的混音器设备,并确保在应用程序关闭之前设备不被移除。语法:MMRESULTmixerOpen(LPHMIXERphmx,UINTuMxld,DWORDdwCallback,DWORDdwlnstance,DWORDfdwOpen);(2)mixerGetLineInfo函数用于获取混音器设备指定的线路信
7、息。语法:MMRESULTmixerGetLinelnfo(HMIXEROBJhmxobj,LPMIXERLINEpmxl,DWORDfdwlnfo);(3)mixerGetLineControls函数用于获取关联音频线路的一个或多个控制器。语法:MMRESULTmixerGetLineControls(HMIXEROBJhmxobj,LPMIXERLINECONTROLSpmxlc,DWORDfdwControls);(4)mixerGetControlDetails函数用于获取指定控制器的详细信息。语法:MMRESULTm
此文档下载收益归作者所有