用Image.canvas.textout和timer在图片上滚动输出文字时总是闪烁,怎么办??(50分)

  • 主题发起人 主题发起人 HeartFly
  • 开始时间 开始时间
在动画中想要不闪烁,
1.最好不要使用xxx.Canvas. (尤其是这个xxx直接放在form上而不是在某个size很小
的panel或其它TWinControl上).
2. 刷新最好不要使用Invalidate, Refresh, Repaint这类方法, 而是最好用InvalidateRect
这个API并指定具体大小的Rect, 而且需要将其中的Erase参数设置成False(这样做
的前提是你已经保存了需要刷新部分的背景或者这个背景本身是个单一色彩区域, 在
刷新时只需要简单FillRect即可)
3.绝对不要用TImage作为动画的背景或动画本身控件. 如果一定要用Image作为放置
背景的容器 , 刷新时也绝对不要使用Image.Picture.Canvas, 而应该直接使用其parent
的Canvas.(如果一定要用Canvas的话)

以上只是个人之见(我的经验)
 
想要不闪烁,我认为是可以这样做的:
在画完之后用相反的模式再画一遍,然后画上新的图,我是试过,但代码丢了,,
 
多人接受答案了。
 
后退
顶部