MFC动态画图
MFC中,在一个对话框中画图,这个图是要动态来实现的,1秒钟画一个点。我写的程序如下:voidChuatu::OnPaint(){CPaintDCdc(this);Get...
MFC中,在一个对话框中画图,这个图是要动态来实现的,1秒钟画一个点。我写的程序如下:
void Chuatu::OnPaint()
{
CPaintDC dc(this);
GetDlgItem(IDC_DIAMETER)->GetClientRect(rect);
rect.Width();
rect.Height();
SetTimer(1,1000,NULL);
}
void Chuatu::OnTimer(UINT nIDEvent)
{
huatu();//调用画图函数
CDialog::OnTimer(nIDEvent);
}
void Chuatu::huatu()
{
CWnd *pWnd = GetDlgItem(IDC_DIAMETER);
CDC* pDC = pWnd->GetDC();
CPen* pPenBlack = new CPen; //创建画笔对象
pPenBlack->CreatePen(PS_SOLID, 1, RGB(0,0,0)); //黑色画笔
CGdiObject* pOldPen = pDC->SelectObject(pPenBlack);
int x=40,y=30;
pDC->MoveTo(x,y);
x++;
y++;
pDC->LineTo(x,y);
pWnd->Invalidate();
}
不显示图。我是初学者,麻烦大家帮帮忙了 展开
void Chuatu::OnPaint()
{
CPaintDC dc(this);
GetDlgItem(IDC_DIAMETER)->GetClientRect(rect);
rect.Width();
rect.Height();
SetTimer(1,1000,NULL);
}
void Chuatu::OnTimer(UINT nIDEvent)
{
huatu();//调用画图函数
CDialog::OnTimer(nIDEvent);
}
void Chuatu::huatu()
{
CWnd *pWnd = GetDlgItem(IDC_DIAMETER);
CDC* pDC = pWnd->GetDC();
CPen* pPenBlack = new CPen; //创建画笔对象
pPenBlack->CreatePen(PS_SOLID, 1, RGB(0,0,0)); //黑色画笔
CGdiObject* pOldPen = pDC->SelectObject(pPenBlack);
int x=40,y=30;
pDC->MoveTo(x,y);
x++;
y++;
pDC->LineTo(x,y);
pWnd->Invalidate();
}
不显示图。我是初学者,麻烦大家帮帮忙了 展开
2个回答
展开全部
CWnd *pWnd = GetDlgItem(IDC_DIAMETER);是获取控件IDC_DIAMETER的窗口对象指针,之后的画图是在控件IDC_DIAMETER的窗口里面画的,之后调用 pWnd->Invalidate();是使得控件IDC_DIAMETER窗口客户区域无效引起重绘。如果想通过Invalidate()函数在窗口绘画,那么先在某处调用Invalidate()函数,然后再在对话框的OnPaint函数这画图,显然在你的OnPaint函数里面没有画图的代码。而且为什么在OnPaint函数里面启动定时器,定时器启动可以在别的地方启动,启动后除非主动把他关掉,他就会不断起作用了。要定时绘图,可以在对话框初始化函数里面启动定时器,在定时器函数里面调用Invalidate()函数,这就相当于定时调用OnPaint函数,然后把画图代码放在OnPaint函数里面就可以了。
更多追问追答
追答
要把每次画线都要保存,在每次画新线条的时候,先根据以前保存下来的数据画出以前画的线,最后画新线条。因为Invalidate()会引起整个窗口重绘,重绘的过程就是先刷新背景然后再调用OnPaint函数,如果做类比的话,就比如在黑板上画画,每次先刷黑板再画画一样,既然先刷黑板,那么前面画的东西就没有了,如果每次画新画的时候同时先把前面的也画上去,那不就等于前面画的画不丢失了吗。对于人来说,这样做会很费劲,但是对于计算机来所,太快了,人根本没有感觉不到画新线条的时候同时先画前面的线条,总体感觉就象每次画线的时候,前面画的线条还保留着一样。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询