征求关于Timage,TImagelist,和TWMEraseBkgnd的充分说明(200分)

  • 主题发起人 主题发起人 yr220
  • 开始时间 开始时间
Y

yr220

Unregistered / Unconfirmed
GUEST, unregistred user!
首先我们如何方便的把TImagelist中的图导入到Timage中,
(canvas.draw()就不用提了,似乎效果不好。)

在对TWMEraseBkgnd的响应中,如果使用了bursh:=bsClear,可以使背景不被画出来,
此时的Timage可以正常显示。
但如果在Timage中使用了透明模式,就会因为反复的擦写导致闪烁。

谁能说一下,背景擦除,重画,子部件重画的具体顺序。
(还有Tbutton和Timage 的表现也不同前者不能全画出来,只有边框)
 
1. ImageList1.GetBitmap(0,Image1.Picture.Bitmap);
2. 在消息处理过程中,将Msg.Result返回“0”表示应用程序已处理该消息。此时即使
Image透明也不会闪烁。
3. 顺序应该是:窗体背景擦除,窗体重画,各子控件重画。
TButton的边框并不在ClientRect中,不是由用户画的,而TImage是图形控件,其
ControlStyle中包含csOpaque,即由用户绘制所有客户区。
 
其实,你把这几样东西连在一起用就是我的问题了,因为在使用透明图像的时候,尤其是循环
播放多幅图片时,我怎么也避免不了闪烁.难道在封装过的组件中实现一点点动画特技都
这么麻烦吗?
 
[:D][:D]几年前的问题,看起来有些幼稚,哈哈。
抱歉让你等了这么久。
 

Similar threads

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