在对话框中的Picture控件上绘纯色矩形,根据数据变化改变矩形的颜色,所以加了OnTimer()函数,在里面调用绘图的函数。
我试了在OnTimer里调用OnPaint(),OnPaint里加入如下代码:
CPaintDC dc(GetDlgItem(IDC_PIC));
CBrush br,*pOldBrush;
……
for(……)
{
br.CreateSolidBrush(RGB(……));
pOldBrush=dc.SelectObject(&br);
dc.Rectangle(……);
dc.SelectObject(pOldBrush);
br.DeleteObject();
}编译成功,但绘图显示的与预期不符。
然后我尝试给Dlg类添加消息处理函数OnDrawItem(),在OnTimer里调用该函数,报错“函数不接受0个参数”。
还试了自己添加一个OnDraw函数,也是能编译成功但绘图显示与预期不符。
请问该怎么解决,是不是上面的代码用在特定的函数中呢?
我试了在OnTimer里调用OnPaint(),OnPaint里加入如下代码:
CPaintDC dc(GetDlgItem(IDC_PIC));
CBrush br,*pOldBrush;
……
for(……)
{
br.CreateSolidBrush(RGB(……));
pOldBrush=dc.SelectObject(&br);
dc.Rectangle(……);
dc.SelectObject(pOldBrush);
br.DeleteObject();
}编译成功,但绘图显示的与预期不符。
然后我尝试给Dlg类添加消息处理函数OnDrawItem(),在OnTimer里调用该函数,报错“函数不接受0个参数”。
还试了自己添加一个OnDraw函数,也是能编译成功但绘图显示与预期不符。
请问该怎么解决,是不是上面的代码用在特定的函数中呢?
解决方案 »
- 新手问题,希望大家解释下。
- VC与C#应该如何做出一个最佳的选择.
- 请问谁知道做个插件怎么能像VAssist插件,能在工程管理(类、资源等)那里加入一页啊?
- Help me! 定时器中的while循环
- 关于CArrayList!!!
- 上面圆角,下面方角的窗口怎么做的?
- 100分!请问用程序如何来截获操作系统的读取文件和保存文件的过程,让我可以对数据进行一些检查?
- 图像处理网络资源( 转载)很好,很值得看!
- 请问.rtf后缀名的文件是什么文件,用什么打开?谢谢。
- Medicalsoft Co. Ltd. 招贤纳士
- 求助:如何获取网页上的好友列表信息
- 请问 能实现使用假IP访问网站并读取网页内容吗?
可以调用Invalide以激活OnPaint
同时画图时用双缓冲 避免闪烁
双缓冲的意思是
在你往窗口绘制之前 现在另一块区域里绘制好(包括 背景 前景)
绘制好后 再会绘制到要显示的窗口上
一般双缓冲是为了防止闪烁
普通绘制: 图—》窗口
双缓冲绘制: 图(和其他内容 如背景 )—》兼容DC——》窗口
双缓冲的意思是
在你往窗口绘制之前 先在另一块区域(一般是内存里)里绘制好(包括 背景 前景图)
绘制好后 再绘制到要显示的窗口上
一般双缓冲是为了防止闪烁
普通绘制: 图—》窗口
双缓冲绘制: 图(和其他内容 如背景 )—》兼容DC——》窗口