
链接: https://pan.baidu.com/s/1oKscISOnRD_REfoC0Kmp0w 提取码: vf9c(包含源码)
在VB6中,图像处理还是很常见的,但是音频处理的资料非常少,会的人也不多,微软虽然在 winmm.dll 中提供了 waveOut 的相关API,但是对VB6开发者不是很友好,使用起来非常繁琐,再加上VB6开发者又是以非专业人士为主,所以我就用VC把 waveOut 封装成对VB6更友好的COM接口,并且大大简化了其细节处理,并且模仿GDI的位图处理函数,实现了相似用法的音频处理函数。
IWaveOutBuffer woBuf1, woBuf2;
… …
woBuf1.DrawWaved Me.hDC, X坐标, Y坐标, 宽度, 高度 ' 将音频缓冲区1内的全部数据绘制成波形图
woBuf2.DrawWaved Me.hDC, X坐标, Y坐标, 宽度, 高度, 起始位置, 采样点数 ' 将音频缓冲区2的子区域数据绘制成波形图
woBuf1.BitBlt 目标位置, 采样点数, woBuf2, 来源位置 ' 把音频缓冲区2的一部分数据拷贝到缓冲区1中。
woBuf2.StrectBlt 目标位置, 目标采样点数, woBuf2, 来源位置, 来源采样点数 ' 把音频缓冲区2的一部分数据缩放到缓冲区1中(可以实现对波形的拉伸)。
整数采样数据 = woBuf1.SampleValue(下标) ' 获取音频缓冲区1中的整数数据(类似GDI的GetPixel)
woBuf2.SampleValueF(下标) = 浮点采样数据 ' 修改音频缓冲区2的浮点数据(类似GDI的SetPixel)
woBuf1.GetBufferBits 数组缓冲区(起始下标), 数组缓冲区大小, 起始位置, 读取采样点数 ' 读取音频缓冲区1的数据到VB的数组中(类似于GDI的GetBitmapBits)
woBuf2.SetBufferBits 数组缓冲区(起始下标), 数组缓冲区大小, 起始位置, 写入采样点数 ' 写入VB的数组数据到音频缓冲区2中(类似于GDI的SetBitmapBits)
woBuf1.GetWaveFotmat ' 获取音频缓冲区格式
wobBuf2.GetAddress ' 获取音频缓冲区的数据地址(可以动态读写里面的音频数据,类似GDI的DIB位图操作)
更多用法在压缩包的例子里面有,这里就不过多介绍了。