做数据采集过程中需要实时显示数据,采用的方法是在对话框控件上直接绘制,OnPaint函数中的关键代码为:
pWnd->Invalidate();
pWnd->UpdateWindow();
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap; //定义一个位图对象
//建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(pDC);
//建立一个与屏幕显示兼容的位图
RECT rect;
pWnd->GetClientRect(&rect);//得到客户区的矩形 原点在控件的左上角 向下y轴增大 向右x轴增大
LONG nWidth = rect.right-rect.left;
LONG nHeight = rect.bottom-rect.top;
LONG reduce_scale=0;
LONG new_nWidth=nWidth-reduce_scale;
LONG new_nHeight=nHeight-reduce_scale;
MemBitmap.CreateCompatibleBitmap(pDC,new_nWidth,new_nHeight); //这里相当于拉伸
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(236,233,216));
//绘制坐标轴
CBrush* pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush* pOldBrush=MemDC.SelectObject(pBrush);
MemDC.Rectangle(&rect);//绘制矩形时选择透明的画刷
MemDC.SelectObject(pOldBrush);
CPen* pPenRed=new CPen();
pPenRed->CreatePen(PS_SOLID,2,RGB(255,0,0));
CPen* pOldPen=MemDC.SelectObject(pPenRed);