使用HDC画音频波形图
来源:互联网 发布:台湾中华电信网络制式 编辑:程序博客网 时间:2024/05/17 01:54
//第一段:(循环处理)HDC hdc = ::GetDC(m_PlaySt.GetSafeHwnd());
DrawWaveR(0, 0, m_rectBoard.Width(), m_rectBoard.Height(), hdc, (short*)m_audio->getCapBuf(), m_audio->getCapBufLen(), 0);
::ReleaseDC(m_PlaySt.GetSafeHwnd(), hdc);//必须和GetDC配对//第二段:画图函数void WaveCanvas::DrawWaveR(HDC hDC/*CDC *pDC*/, /*CRect rectBoard, */short* pData, DWORD dwDrawLength, int type){if (NULL == pData){return;}int m_beginX = 100;int m_beginY = 100;//创建一个刷子HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 0));HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);//绘制矩形Rectangle(hDC, m_x, m_y, m_width, m_height);//创建实线,宽度为1HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));//将笔选入DCHPEN hOldPen = (HPEN)SelectObject(hDC, hPen);int size = dwDrawLength / 2;int yy = /*rectBoard.Height()*/m_height / 2;//pDC->MoveTo(rectBoard.left/*m_beginX*/, int(rectBoard.Height() / 2 + rectBoard.top/*m_beginY*/));MoveToEx(hDC, m_x, m_height / 2, NULL);int h = yy;int x, y;short sample;for (int register i = 0; i <(long)size; i++) //to draw first channel{sample = ((*(pData + i))*h) / (65535 / 2);x = int(((float)i / size)*(/*rectBoard.Width()*/m_width));y = yy - sample;//pDC->LineTo(rectBoard.left/*m_beginX*/ + x, y + rectBoard.top/*m_beginY*/);LineTo(hDC, m_x + x, m_y + y);}//pDC->SelectObject(&oldPen1);//恢复绘图对象SelectObject(hDC, hOldPen);//删除绘图对象DeleteObject(hPen);DeleteObject(hBrush);}
DrawWaveR(0, 0, m_rectBoard.Width(), m_rectBoard.Height(), hdc, (short*)m_audio->getCapBuf(), m_audio->getCapBufLen(), 0);
::ReleaseDC(m_PlaySt.GetSafeHwnd(), hdc);//必须和GetDC配对//第二段:画图函数void WaveCanvas::DrawWaveR(HDC hDC/*CDC *pDC*/, /*CRect rectBoard, */short* pData, DWORD dwDrawLength, int type){if (NULL == pData){return;}int m_beginX = 100;int m_beginY = 100;//创建一个刷子HBRUSH hBrush = CreateSolidBrush(RGB(0, 0, 0));HBRUSH hOldBrush = (HBRUSH)SelectObject(hDC, hBrush);//绘制矩形Rectangle(hDC, m_x, m_y, m_width, m_height);//创建实线,宽度为1HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));//将笔选入DCHPEN hOldPen = (HPEN)SelectObject(hDC, hPen);int size = dwDrawLength / 2;int yy = /*rectBoard.Height()*/m_height / 2;//pDC->MoveTo(rectBoard.left/*m_beginX*/, int(rectBoard.Height() / 2 + rectBoard.top/*m_beginY*/));MoveToEx(hDC, m_x, m_height / 2, NULL);int h = yy;int x, y;short sample;for (int register i = 0; i <(long)size; i++) //to draw first channel{sample = ((*(pData + i))*h) / (65535 / 2);x = int(((float)i / size)*(/*rectBoard.Width()*/m_width));y = yy - sample;//pDC->LineTo(rectBoard.left/*m_beginX*/ + x, y + rectBoard.top/*m_beginY*/);LineTo(hDC, m_x + x, m_y + y);}//pDC->SelectObject(&oldPen1);//恢复绘图对象SelectObject(hDC, hOldPen);//删除绘图对象DeleteObject(hPen);DeleteObject(hBrush);}
阅读全文
0 1
- 使用HDC画音频波形图
- AVAssetReader 音频波形图
- java绘制音频波形图
- android音频波形图绘制
- android音频波形图绘制
- 如何使用波形音频音量控制 API
- Delphi根据音频数据画波形
- JAVA画出wav音频波形图
- android绘制播放音频的波形图
- iOS 画音频波形曲线 根据音频数据版
- iOS 画音频波形曲线 根据音频数据版
- iOS 画音频波形曲线 根据音频数据版
- iOS 画音频波形曲线 根据音频数据版
- (STM32)使用DAC输出WAVE音频波形
- 波形音频(WAVE)底层接口的学习与使用
- 波形音频(WAVE)底层接口的学习与使用
- 22,波形音频
- 22.2 波形音频 I
- 初学者对java数组中栈和堆的认识
- RxBus 基于 RxJava1.x 实现消息传递机制
- Spark性能优化指南——基础篇
- android中布局和View创建的源码分析---setContentView
- Maven学习总结(15)——深入理解Maven相关配置
- 使用HDC画音频波形图
- 测试一篇博客
- emoji正则表达式
- hdu1426数独游戏Sudoku Killer DFS
- Android动画(一)
- MongoDB
- C# Linq 常用 整理
- 爬取网站前4_避免爬虫陷阱
- 数组