一个随手画程序,画的过程中窗口被挡住原来的图形就没了,怎么处理?(50分)

  • 主题发起人 主题发起人 feng1234
  • 开始时间 开始时间
F

feng1234

Unregistered / Unconfirmed
GUEST, unregistred user!
多谢了:)
 
覆盖onPaint事件.
 
如果是图省事,就把TPaint控件换成TImage。
否则你要自己写TPaint控件的OnPaint事件进行重画。
 
当窗口被挡住后重新显示,或移动窗口,改变窗口大小时,系统会触发ON_PAINT消息,对窗口进行
重画,你需要自己处理重画消息。用DELPHI的IMAGE控件,它自动进行重画。
 
我觉得用onpaint事件比较好,即不占用内存,而且还比较智能,只会重画被覆盖的画面。不过要麻烦点
 
如果是图省事,就把TPaint控件换成TImage。
否则你要自己写TPaint控件的OnPaint事件进行重画。

Q:我没有用什么 TPaint控件阿,只是直接在窗口的Canvas上面画

系统会触发ON_PAINT消息,对窗口进行
重画,你需要自己处理重画消息。用DELPHI的IMAGE控件,它自动进行重画。
Q:是在form1的on_paint事件里面添加代码吗?
怎样重画阿?因为感觉原来直接在窗口上画的图形其实程序里面没有保存它的信息阿

 
我是这样做的,每在canvas画个图,就用全局变量纪录住图像的内容及位置,然后再on_paint事件里进行重画。当然,前提是canvas上的图像有规律且不是很复杂。
 
我是这样做的,每在canvas画个图,就用全局变量纪录住图像的内容及位置,然后再on_paint事件里进行重画。当然,前提是canvas上的图像有规律且不是很复杂。

哦,呵呵,好像是个办法,我试试看:)
 
如果复杂的话,画完图后,你就把整个屏幕保存起来,比如拷贝到一个临时的bitmap里,然后在on_paint里重画
 
后退
顶部