对话框控件上绘制坐标轴及数据

本文介绍了一种在对话框控件上实时显示数据的方法,通过OnPaint函数利用CDC、CBitmap等对象进行绘图。首先创建内存显示设备和位图,然后清除背景并绘制坐标轴、箭头和标签,接着绘制数据点和坐标轴刻度,最后通过 StretchBlt 函数将内存中的图像显示到对话框控件上。
摘要由CSDN通过智能技术生成

做数据采集过程中需要实时显示数据,采用的方法是在对话框控件上直接绘制,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);

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值