上位机MFC仿音频波曲线绘制源代码
效果如上图。
主要通过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;
-
-
- }
复制代码 可以下载源代码参考学习:
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
|