微软用户

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上一页 下一页 停止放映
第4|50页
1.命令字符串接口函数mciSendString
其原形如下:
MCIERROR mciSendString( LPCTSTR lpszCommand, //指向MCI命令字符串指针 LPTSTR lpszReturnString,//指向接受返回信息缓冲区指针 UINT cchReturn, //返回信息缓冲区的大小 HANDLE hwndCallback //该参数指定回调的窗口句柄, ) //否则为NULL。 该命令字符串通常具有以下个格式:

上一页 下一页 停止放映
第6|50页
ห้องสมุดไป่ตู้
MCI命令消息接口函数mciSendCommand

MCIERROR mciSendCommand( MCIDEVICEID IDDevice, //接受命令消息的MCI设备的ID号, UINT uMsg, //命令消息 DWORD fdwCommand, //命令消息的标志位 DWORD_PTR dwParam //指向包含命令消息参数
第12|50页
RIFF文件格式

上一页 下一页 停止放映
RIFF文件基本构成是称为“块”的单元, 每块有“ID”、“数据大小”及“数据”3 部分组成。 ID为4个字符代码,如"RIFF","LIST" 等,指定块的标志ID; 数据大小用来指定数据域大小,占4个 字节; 数据用来描述具体的声音信号,它们是 “RIFF”或“LIST”标志的块,其中RIFF 块的级别最高,它可以包括LIST块。
上一页 下一页 停止放映
第23|50页
【例6-4】
上一页 下一页 停止放映
第21|50页
画线

画线工作需经两步完成:


首先确定线的起始端位置,这可通过调用成 员函数MoveTo完成,其原型为: CPoint MoveTo ( int x, int y ); MoveTo 将绘图位置移至指定坐标处,并返 回移动前的绘图位置。 使用成员函数LineTo画线: BOOL LineTo ( int x, int y );
第8|50页
上一页 下一页 停止放映
【例6-2】
使用命令消息接口函数播放wav文件。 思路:同例6-1。 步骤:同例6-1。

例6-2
上一页 下一页 停止放映
第9|50页
#include <windows.h> #include <iostream> #include <mmsystem.h> #pragma comment(lib, "winmm") using namespace std; int main() { MCI_OPEN_PARMS openParms; openParms.lpstrDeviceType="waveaudio"; openParms.lpstrElementName="c:\\011.wav"; MCIERROR errCode=mciSendCommand(NULL, MCI_OPEN,MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, (DWORD)(LPMCI_OPEN_PARMS) &openParms); if( !errCode ) { MCI_PLAY_PARMS playParms; MCIERROR errCode2=mciSendCommand(openParms.wDeviceID, MCI_PLAY,NULL,(DWORD)(LPMCI_OPEN_PARMS) &playParms); } else return 1; //出错返回 int i = 0; 上一页 for(;;) { cout<<"Now playing\t"<<i++<<"\tsecond\r"; Sleep(1000); 下一页 return 0; } 停止放映
第13|50页
WAVE文件结构
数据(占用字节数)

RIFF
ID (4)
数据大小 (4)
格式类型 (4) WAVE
子块ID (4)
数据大小 (4)
WAVEFORMATEX 数 据 (sizeof(WAVEFORMATEX))
fmt
sizeof(WAVEFORMATEX)
WAVEFORMATEX data
第20|50页
上一页 下一页 停止放映
画笔
画笔是用来画线的工具,是CPen类的对象。
//声明画笔对象,并创建宽度为3的红色实线笔 CPen penRed(PS_SOLID, 3, RGB(255, 0, 0)); // 使用新的画笔,保存原来的画笔以便恢复 CPen*pOldPen=pDC-SelectObject(&penRed); pDC->SelectObject(pOldPen); // 恢复原来的画笔 //CDC::SelectObject() 方法选定放入当前设备环境的新对象,并返回 一个指向被替换对象的指针。 pOldPen = pDC->SelectObject(&penRed); // 保存了原来的画笔。保存并恢复原来画笔的原因是,每个图形设备 接口对象要占用一个HDC句柄,而可用的句柄数量是有限的,在使用 完后要及时释放。
上一页 下一页 停止放映
第19|50页
MFC中的绘图工具对象



MFC 定义了若干种对应于 Windows 绘 图工具的图形对象,包括画笔、画刷、 字体、位图等。 这些Windows绘图工具封装在MFC图形 对象类中,并且都是由CGdiObject基类 派生而来。 这 些 图 形 对 象 类 分 别 是 : CPen 、 CBrush、CFont、CBitmap 等。
上一页 下一页 停止放映
第22|50页
绘制矩形、椭圆

绘制矩形的成员函数为:
BOOL Rectangle(int x1,int y1,int x2, int y2 );

绘制椭圆成员函数的原型为:
BOOL Ellipse(int x1, int y1, int x2, int y2 );
其参数为需要绘制的矩形的左上角坐标 (x1, y1)和右下角坐标(x2, y2)。
typedef struct { WORD wFormatTag; //编码格式 WORD nChannels; //声道数 DWORD nSamplesPerSec; //采样频率 DWORD nAvgBytesPerSec; //传输率 WORD nBlockAlign; //块对齐 } WAVEFORMAT;
例6-2源代码
}
第10|50页
音频文件



上一页 下一页 停止放映
WAVE文件是一种通用的音频数据文件,文件 扩展名为“.WAV”,Windows系统和一般的音 频卡都支持这种格式文件的生成、编辑和播放。 CD激光唱盘中包含的就是WAVE格式的波形数 据,只是扩展名没写成“.WAV”。 MP3文件是采用MP3算法压缩生成的数字音频 数据文件,以“.MP3”为文件后缀。将音频信 息用10:1甚至12:1的压缩率,变成容量较小的 数据文件。 Real Audio是Real networks推出的一种音乐压 缩格式,它的压缩比可达到96:1,因此在网上比 较流行。
第11|50页
Wave文件格式



上一页 下一页 停止放映
常见的WAVE语音文件主要有两种: 单声道(11.025KHz、8Bit采样值) 双声道(44.1KHz、16Bit采样值) 对于单声道声音文件,采样数据为8位的 短整数(short int 00H-FFH);而对于 双声道立体声声音文件,每次采样数据为 一个16位的整数(int)。 WAVE文件数据块包含以脉冲编码调制 (PCM)格式表示的样本。
二、音频的播放和处理

音频播放是指在程序中播放存储在本地 的音频文件,如WAV波形文件、MP3 等,并能够实现对播放作进一步的控制, 如暂停,从指定的位置播放等。 音频处理则是改变现有的音频文件中音 频的特性以产生某种特殊的效果。

上一页 下一页 停止放映
第3|50页
使用MCI播放音频


Windows MCI(Media Control Interface)是 Windows提供的控制多媒体设备的高层、通用 的命令接口。它提供一组与设备无关的函数和 命令,可有效地控制多媒体设备。 Windows采用两种MCI接口与MCI设备通信: 一是使用命令消息接口函数,直接控制MCI 设备; 二是使用命令字符串接口函数,基于文本接 口或命令脚本来控制MCI设备。
第15|50页
上一页 下一页 停止放映
例6-3

打开一个 WAVE 文件,反转其中音频的数据,以 一个新的WAVE格式文件写回硬盘。 思路:该程序读入C盘文件03.wav,反转其中的 数据,以文件名02_new.wav写回硬盘。 本程序处理 16 位立体声文件。可以很容易对其 扩充,使其可以处理更多的格式(如8位立体声, 16位单声道等)。 步骤:同例6-1。
例6-3



上一页 下一页 停止放映
第16|50页
图像处理

GDI图形设备接口 显示位图 BMP位图的结构 BMP位图的读写与处理
上一页 下一页 停止放映
第17|50页
设备环境


上一页 下一页 停止放映
在Windows程序中,应用程序(包括Windows 本身)的输出并不直接面向物理的设备,而是 针对一个称之为设备环境DC(Device Context) 的逻辑设备进行操作。 设备环境广泛应用与GDI图形设备接口。设备 环境中包含了关于当前选定用于一种设备的画 笔、画刷、字体和位图等信息,设备环境与实 际设备之间的信息传送由Windows直接管理。 MFC提供了用于若干不同类型的设备环境的类, 应用程序在将任何东西画到设备中去之前,必 须明确索取一个设备环境。
第 6章 多媒体编程技术 (二)
软件开发技术基础
计算机教学实验中心
提出问题

在编程中播放音频?

使用MCI播放音频、Wave文件结构、音效 处理
Windows GDI、MFC、BMP ? 图像旋转、镜像、浮雕、油画效果

在编程中如何处理图像?


位图动画如何处理?
上一页 下一页 停止放映
第2|50页
第18|50页
在MFC应用中绘图


在MFC应用程序中,所有的绘制调用均 通过相应的设备环境对象实现。在MFC 类库中,用CDC类封装设备环境对象, 并提供了在窗口的客户程序区域上画图 的方法。 CDC类提供的操作有:对颜色、坐标映 射和转换,对多边形和区域进行操作, 绘制各种形状,绘制文本,处理字体等。

上一页 下一页 停止放映
MCI命令 MCI设备 命令参数 命令标志 例: open c:\music\01.wave
第5|50页
例6-1
使用命令字符串接口函数播放MP3文件。 思路:该程序使用mciSendString播放C:盘 下01.mp3文件,并显示播放时间。 操作步骤: 1)打开VC新建一个空白的控制台程序。 2)在项目中插入一个空白的源代码文件, 键入一段代码,编译并运行。
//结构的指针
);
上一页 下一页 停止放映
第7|50页
例6-1源代码
#include <windows.h> #include <iostream> #include <mmsystem.h> using namespace std; #pragma comment(lib, "winmm") int main() { char szReturn[256]; MCIERROR errorCode=mciSendString("play c:\\01.mp3", szReturn , sizeof(szReturn) , NULL ); int i = 0; for(;;) { cout<<"Now playing\t"<<i++<<"\tsecond\r"; Sleep(1000); } return 0; 例6-1 }
子块ID (4)
上一页 下一页 停止放映
数据大小 (4) 音频数据
第14|50页
数据结构
WAVEFORMATEX结构定义如下:
typedef struct { WAVEFORMAT wf; WORD wBitsPerSample; } PCMWAVEFORMAT; //采样精度
WAVEFORMAT结构定义如下:
相关文档
最新文档