工控编程吧
标题:
上位机MFC仿音频波曲线绘制源代码
[打印本页]
作者:
qq263946146
时间:
2019-10-9 10:54
标题:
上位机MFC仿音频波曲线绘制源代码
(, 下载次数: 0)
上传
点击文件名下载附件
效果如上图。
主要通过GDI绘图函数实现音频波形的绘制功能。
主要代码如下。
例程通过第30ms刷新界面,
进而调用下面代码 重绘界面实现波形绘制。
#define COLS 7450
void CTestDrawCurve_26View::OnDraw(CDC* pDC)
{
CTestDrawCurve_26Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CRect rc;
int curveHigh = ((m_rcSize.cy)*2/3-256); //区域的高度为256
SetRect(&rc,0,curveHigh,m_rcSize.cx,m_rcSize.cy*2/3);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
CBitmap bitmap,*pOldBitmap;
CPen *pOldPen;
bitmap.CreateCompatibleBitmap(pDC,rc.right,rc.bottom);
pOldBitmap = MemDC.SelectObject(&bitmap);
pOldPen = MemDC.SelectObject(&m_linePen);
MemDC.FillSolidRect(&rc,RGB(39,194,156));
MemDC.SetViewportOrg(0,(rc.bottom));
//设置x,y
MemDC.TextOut(0,-curveHigh,"255");
MemDC.MoveTo(0,-curveHigh);
MemDC.LineTo(rc.right,-curveHigh);
CPoint *p = new CPoint[COLS];
int mod = m_rcSize.cy/3;
p[0].x = 0;
p[0].y = -255;
for ( int i =1 ;i < COLS;i++)
{
p[i].x = i*2;
p[i].y = -rand()%curveHigh;
// MemDC.SetPixel(p[i],RGB(255,0,0));
}
MemDC.Polyline(p,COLS);
MemDC.SetViewportOrg(0,0);
pDC->BitBlt(rc.left,rc.top,rc.right,rc.bottom,&MemDC,rc.left,rc.top,SRCCOPY);
pDC->TextOut(m_rcSize.cx,m_rcSize.cy,_T("(像素)"));
MemDC.SelectObject(pOldBitmap);
MemDC.SelectObject(pOldPen);
DeleteDC(MemDC);
delete p;
}
复制代码
可以下载源代码参考学习:
(, 下载次数: 0)
上传
点击文件名下载附件
[halcon]1[/halcon]
[weixinlianxi]1[/weixinlianxi]
[MFC408]1[/MFC408]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4