MFC对话框绘制坐标轴和动态曲线的问题VS2010
下面的是我的onpaint,现在我已经把坐标轴画出来了,我想用ontimer来动态描点画折线,数据放在全局数组中,请问应该怎样实现?
void CfangzhenDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CString str;
//强制更新绘图, 不可少, 否则绘图会出错
pWnd->Invalidate(); //使static控件的区域无效
pWnd->UpdateWindow();//更新窗口, 此时才真正向系统发送重绘消息
CDC *pDC = pWnd->GetDC(); //获取控件的CDC指针
pDC->Rectangle(0, 390, 700, 0); //画一个矩形框
CPen *pPenRed = new CPen(); //创建画笔对象
pPenRed ->CreatePen(PS_SOLID, 1, RGB(128, 128, 128)); //黑色画笔
CPen *pPen = NULL;
//选中当前红色画笔,并保存以前的画笔
CGdiObject *pOldPen = pDC ->SelectObject(pPenRed);
pDC ->MoveTo(20, 20); //绘制坐标轴
pDC ->LineTo(20, 360); //竖起轴
pDC ->LineTo(690, 360); //水平轴
//写X轴刻度值
for(int i = 0; i <= 25; i ++)
{
str.Format(_T("%d"), i);
pDC ->TextOut(17 + 25 * i, 365, str);
//绘制X轴刻度
pDC ->MoveTo(i * 25 + 20, 360);
pDC ->LineTo(i * 25 + 20, 355);
}
pDC ->TextOut(680,365,_T("t/s"));
//写Y轴刻度值
for(int i = 1; i <= 10; i ++)
{
str.Format(_T("%d"), i);
pDC ->TextOut(2, 360 - 30 * i - 5, str);
//绘制Y轴刻度
pDC ->MoveTo(25, 360 - 30 * i);
pDC ->LineTo(20, 360 - 30 * i);
}
//绘制X箭头
pDC ->MoveTo(680, 357);
pDC ->LineTo(690, 360);
pDC ->LineTo(680, 363);
//绘制Y箭头
pDC ->MoveTo(17, 30);
pDC ->LineTo(20, 20); //绘制左边箭头
pDC ->LineTo(23, 30); //绘制右边箭头
pDC ->SelectObject(pOldPen);//恢复以前的画笔
delete pPenRed;
if(pPen != NULL)
delete pPen;
ReleaseDC(pDC);
}
...全文
相关推荐
C++vs2010对话框动态曲线图.
基于vs2010对话框的实时曲线图,定时器模拟实时产生的随机数,修改别人的,坐标乱标的。
VS2019 MFC Teechart V5.1动态曲线绘制实战:从控件注册到实时数据可视化
本文详细介绍了在VS2019 MFC环境下使用TeeChart V5.1控件实现动态曲线绘制的完整流程,从控件注册、项目集成到实时数据可视化。通过实战案例展示了定时器机制、数据刷新、图表样式定制等核心功能,并提供了性能优化和高级功能的使用技巧,帮助开发者快速掌握工业监控和实验室数据采集等场景下的动态绘图技术。
VS2010基于对话框的MFC串口通信简明例程(源码)
VS2010基于对话框的MFC串口通信简明例程的源码,内涵一个虚拟串口软件。
MFC 利用对话框画函数曲线
MFC 利用对话框画函数曲线,经典,通过此法可以绘制各种函数曲线。
MFCvs2010画曲线图
简单的实现在坐标内画曲线,基于对话框,修改网上的,坐标要根据自己的需要修改。


图形处理/算法

