如果解决IMAGE控件上的其它控件运行时的闪烁问题?(100分)

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

fatlu

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在做一个登录窗口,窗口中放有一个IMAGE控件,并设置了一位图。IMAGE上还有几个EDIT和LABLE用作用户名和密码输入框。但发现当窗口刚开始运行时,屏幕是先出现两个EDIT才出现IMAGE的图片,非常不美观!我见许多大大做的登录窗口都没这个现象阿?!希望大家帮忙解决一下这个问题。。。。
 
image 控件上放其它控件出现闪烁,偶想应该没有办法可以解决。所以偶也听听。
 
double:=true;
 
“double:=true”??? 有吗?
 
显示之前
Image1.ControlStyle:=Image1.ControlStyle + [csParentBackground];
 
To:wr960204
你好,我用的是Delphi6,怎么好像找不到相关csParentBackground声明?程序老是报错。。。。

 
Delphi7 新加的控件风格,用来支持 XP 以上操作系统的主题服务。但用在这里大约没用。
 
不可能找不到声明,从DELPHI1开始就由这个csParentBackground。
在Controls单元
 
那就是 Borland 公司的不是了,不但在 Delphi5 企业版里删掉了这个东西,还连带着在
帮助文件里都隐藏掉。真是绝了。

到了 Delphi7 ,Borland 公司却说:
New TControlStyles: csParentBackground.
意思是说:一个新添加的风格标志。并且说:
only applicable when Themes are Enabled in applications on Windows XP.
意思是:只是为了让程序支持 Windows XP 的主题服务。

该死的 Borland ,Delphi1 就有的东西,到了 Delphi7 还拿出来冒充新货。
 
是我写错了因该是csAcceptsControls
 
嗯。csAcceptsControls 应该也不是处理这个现象的。我以为,使用 image 控件本身的思
路有问题,虽然在快的机器上不会有他所说的现象,但他本身是 TGraphicControl 类的控
件,这种控件不具有局部重画能力,所以处理起来就比较困难。如果强行需要这样做,就
应该直接从 TGraphicControl 派生出自己的东西,在整个图像显示出来前,完成内部绘图
工作。比较可取的做法是放弃使用 image 控件这个思路,使用图形预装载技术完成界面的
初始化(Demo http://ale.xicp.net/upload/LoginT.rar 保留 7 天)。这个做法既简单
又实用。由于我的机器太快,Demo 效果在慢速机器上到底如何,我也不知道。
 
你试一下这个:

在FORM的ONCREATE事件中加入:
form1.doublebuffer:=true;

 
估计是图片做的有问题,我的有个也是这样的
 
我测试了直接从 TGraphicControl 派生类,完成内部绘图后显示整版图片,程序的 Demo
在下面链接里,包括上面那个演示,机器慢的试试看,还会不会再闪烁:
http://ale.xicp.net/upload/Check.rar (这是个搞笑界面,符合 UI 规范,但不可当真,
同样保留一周时间后删除)
 
首先感谢小雨哥对这个问题积极回应!
防止Timage以及窗口的闪烁的确是可以用form.doublebuffer := True来实现。
使用前后的效果还是很明显的,这个我在提出这个问题前都已经用到。但是令我不解的是
加上这条语句后,依然是有明显的闪烁。听了mystudy的建议,我将图片的大小缩小,结果问题解决了!我原来的图片大小为800*600,现在改为400*300,结果没有之前的闪烁!因此这个问题的答案应该是mystudy所说,但是为了感谢小雨哥的热情支持,各位不介意我多给一点分吧?
 
多人接受答案了。
 
后退
顶部