VC picture控件画图

我在对话框初始化中启动定时器实现在PIC控件上不断画图,但是PIC控件中所画的图一会就会消失,查看“Windows任务管理器”,看到PF使用率不断上升,不是很明白出现问题... 我在对话框初始化中启动定时器实现在PIC控件上不断画图,但是PIC控件中所画的图一会就会消失,查看“Windows任务管理器”,看到PF使用率不断上升,不是很明白出现问题的原因,恳请各位帮忙分析解决一下这个问题,不胜感谢!
代码如下:

BOOL CTestsavepicDlg::OnInitDialog()
{
....
// TODO: Add extra initialization here

SetTimer(1,100,NULL);

return TRUE; // return TRUE unless you set the focus to a control
}
//////////////////////////////////////////////
// CBitmap m_pBitmap;
// CStatic m_picture;//picture控件变量

void CTestsavepicDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CreateBmp(&m_pBitmap);
m_picture.SetBitmap((HBITMAP)m_pBitmap.Detach());

CDialog::OnTimer(nIDEvent);
}
/////////////////////////////////////////////
void CTestsavepicDlg::CreateBmp(CBitmap *bitmap)
{
CClientDC dc(this);
//设置内存CDC
CDC MemDC;
//创建相容的bitmap和dc
bitmap->CreateCompatibleBitmap(&dc, m_rectPos.right,m_rectPos.bottom);
MemDC.CreateCompatibleDC(&dc);
MemDC.SelectObject(bitmap);
//在内存DC中绘制图形
DrawCircleFrame(&MemDC);
//将创建图片保存在内存中
MemDC.SelectObject(bitmap);

MemDC.DeleteDC();
}
void CTestsavepicDlg::DrawCircleFrame(CDC *pDC) //画绘图区域的边框
{
int Xcentr,Ycentr,Radius;
Xcentr=m_rectPos.left+m_rectPos.Width()/2;
Ycentr=m_rectPos.bottom-m_rectPos.Height()/2;
Radius=80;
CPen pNewPen;
CPen* pOldPen;
CFont fontText;
CFont *pOldFont;
fontText.CreateFont(15,6,0,0,20,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,NULL);
pOldFont = pDC->SelectObject (&fontText);
pDC->SetTextColor(RGB(0,0,255));
pNewPen.CreatePen(PS_SOLID,1, RGB(0,0,0));
pOldPen=pDC->SelectObject(&pNewPen);

pDC->Rectangle(m_rectPos);

x=sizeof(y)/sizeof(int);
pDC->MoveTo(35,m_rectPos.bottom-30);
for (int i=0;i<x;i++)
{
pDC->LineTo(35+m_rectPos.right*i/20,m_rectPos.bottom-30-y[i]);
}
pDC->SelectObject(pOldPen);
pNewPen.DeleteObject();
}
由于所画的图是与串口接收的数据有关,所以用定时器不断检测串口数据,在有数据时就画图,所以我觉得不能在要在OnDraw或OnPaint中处理,或许我想法错误,请详细指点一下,谢谢!
展开
 我来答
厚琪茆绮波
2019-06-25 · TA获得超过4201个赞
知道大有可为答主
回答量:3092
采纳率:34%
帮助的人:247万
展开全部
Measurement
Studio是NI公司的开发工具,可以在VC里使用,很方便的
可以使用NI的Measurement
Studio中graph控件
你将x轴和y轴的数据直接给该控件就行了,很方便的
可以用它的ITEM("Plot-1").ChartXY(x_data,y_data)
将你要显示的数据送给它就ok了
具体的你可以看一下NI的帮助
注意,这个控件你要安装Measurement
Studio才可以
要注册的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何志丹1
2010-04-10
知道答主
回答量:21
采纳率:0%
帮助的人:0
展开全部
要在OnDraw或OnPaint中处理
刷新时,调用Invalidate()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式