在delphi6中用Image的canvas画图为何闪烁?(100分)

  • 主题发起人 主题发起人 马晓明
  • 开始时间 开始时间

马晓明

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我最近安装了Delphi6企业版,但是发现用Image的canvas画图时出现闪烁,
请问各位有没有遇到此类问题,这是Delphi6的bug吗?另外,我的电脑中以前安装
了Delphi5企业版,是否是因为它俩儿之间产生了冲突?我装delphi6不是升级安装。
 
如果你的界面上放了TIMAGE以外还露出了FORM的部分的话,就很容易出现闪烁,如果用
IMAGE将FORM盖掉就不会出现闪烁,我以前碰到过这个问题,可能是由于重画而引起的吧
 
Image很大时也会闪烁,有人说FORM.doublebuffered:=true,试试,好像有一些用,担不是很明显
 
参考TWinControl的WMPaint在DoubleBuffered为TRUE的处理方法自己写一个Image可以
消除闪烁。TGraphicControl继承来得TImage没有句柄,不能使用InvalidateRect或
InvalidateRgn方法,真是可惜...
 
你除了draw,有没有做其他的repaint、update、refresh之类的操作?
 
是不是只是delphi6的问题?
 
我也遇到了同样问题,但我用paintbox代替image就消除了闪烁,我不知道两者之间可否代替。
 
你怎么画的
 
不会的,如果控制得好的话,不会闪烁的,象Pipi说的有没有用过那几个函数,或者
有什么控件的重画影响的刷新,
我刚刚写了个矢量图工具,全部是用代码在TImage上作图,都没有碰到闪烁的问题,
只是以前有一次TImage位置没有放好,露出了一些FORM部分的时候,出现了闪烁
 
zyg_zm
大哥是否可以将一些矢量图的制作源程序发给我(hzyhj@163.net)
 
对不起,我那个程序是给公司写的东西,源码不便外拷,是用C++ Builder做的,如果有
什么问题,你问好了,我知道的话肯定会告诉你,你也可以去问“卷起千堆雪tyn”,他是
这方面的专家。
而且我是在家里上网,公司的电脑不能上网。不好意思
 
各位,我曾经将Image的Align属性设为Client,覆盖了整个Form,但还是闪烁。
我是用Pen.mode的pmnotxor来去除以前画的图形的方法画图,delphi6提供的
画图程序就是这样画图的。
 

form1.doublebuffer:=true

 
擦除以前画的图形,一般是用pmXOR呀,我曾经再我的程序中画了几万个图形,都没有闪烁
也没有用什么DOUBLEBUFFER=TRUE,对了,IMAGE的Transparent一定要设成False,否则肯定会
闪烁。
 
里面创建一个TBitmap,在这个bitmap画好了,再复制到屏幕上的TImage去
 
我在delphi5下没有出现闪烁的问题。就这样吧。先结束本话题的讨论。谢谢各位的帮忙。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
824
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
851
DelphiTeacher的专栏
D
后退
顶部