canvas图像的重画问题 ( 积分: 50 )

  • 主题发起人 主题发起人 镀金的乞丐
  • 开始时间 开始时间

镀金的乞丐

Unregistered / Unconfirmed
GUEST, unregistred user!
用canvas画出的图像,一旦被别的窗口遮挡,被遮挡的部分就给刷掉了
如何能做到,无论别的窗口在canvas上拖动,canvas中的图像都能正常显示?
我编程中用到stringgrid控健,根据要求想改变stringgrid中某个被指定的单元格的背景色,如果各位大虾有什么别的高招,万望指点指点,跪谢~!
 
用canvas画出的图像,一旦被别的窗口遮挡,被遮挡的部分就给刷掉了
如何能做到,无论别的窗口在canvas上拖动,canvas中的图像都能正常显示?
我编程中用到stringgrid控健,根据要求想改变stringgrid中某个被指定的单元格的背景色,如果各位大虾有什么别的高招,万望指点指点,跪谢~!
 
我也遇到过此问题.关注学习中.
 
不能沉啊,我顶~~~~~~~~~~
盼望大虾出现
 
看有没有自动重画属性
 
在stringgrid的ondrawcell事件中画
 
感谢迷糊兄的回答,对stringgrid改变单元格背景色的问题解决了
但对于普通的canvas,如何处理重画问题呢?
 
一般要处理WM_PAINT消息
 
这我有经验,我写股票分析软件时就是用canvas画,主要是在FormPaint里面(就是响应Form的OnPaint事件)调用画图模块和文本显示模块。

OnPaint 事件 窗体上有新部分暴露出来触发
OnResize 事件 重新调整窗体大小触发
OnShow 事件 在窗体实际显示之前瞬间触发
可以参看:http://www.yesky.com/20000713/93524.shtml
 
OnPaint里写代码:),看看xlGrid如何处理的
 
我建议你不停的重画好了
 
在onpaint 事件中 重画 应该就可以解决问题了
要不就 用一个 image 控件
画好再 复制 画布
 
难道就不能阻止重画吗?stringgrid得重画很浪费系统资源的。各位高手指点迷经。
 
响应WM_Paint呀,上面说得很清楚了。
 
这样解决巴

先在内存中画好图像,然后把图像再拷贝到 image上,用image来显示图像,这样就不会出现由于遮挡而致使出现不断重画的问题!如果你的图像的大小有时候需要变换那么就采用把image控件放到ScrollBox控件中的方法这样就可以随意调节大小而不会导致图像放大看不见的问题。[:D][:D]

[8D]如果还有疑问请继续
 
把画图的代码写到OnPaint事件里就可以了
 
To:EdwardZhou,
如何相应 WM_PAINT 事件???我不太懂这些东西只会快速开发。
 
使用
invaliaterect 函数
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部