双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

MFC对话框绘制坐标轴和动态曲线的问题VS2010

x123y123 x123y123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下面的是我的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);

}
...全文

相关推荐

评论 19
收藏 已收藏
分享
返回顶部
x123y123
图形处理/算法 19,463 成员 50,678 内容