图形窗口的无闪烁切换(200分)

  • 主题发起人 主题发起人 dong738
  • 开始时间 开始时间
D

dong738

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一窗口上放置了九十多个自定义图形命令控件,每一个控件是以TGraphicControl类为
父类,再调用画布上的图形函数画成的。现在就存在一个问题:就是放置了这些控件的窗口
相互切换时,就出现明显的延时,屏幕上出现令人讨厌的闪烁。现在请教各位专家,能否有
办法解决它,使各窗口切换时不出现闪烁。谢谢!
 
在适当的地方加上下面的代码会好一些的

Perform(WM_SETREDRAW, 0, 0); //锁屏幕

Perform(WM_SETREDRAW, 1, 0); //解锁屏幕并重画
RedrawWindow(Handle, Nil, 0, RDW_FRAME + RDW_INVALIDATE +
RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
 
以前我也遇到过此情况。也是做了一个TGraphicControl控件作为父控件,
可后面闪烁问题使终得不到解决,只好用一个和背景颜色相同的panel作为父控件,才没闪烁
关注!!
 
呵,直接重画,不要刷屏
 
要不这样,你把窗体换民frame,然后只在from1中显示一个frame,
可以让frame初始化好再visible:=true.
 
关注此问题
 
试试:TGraphicControl.Parent.DoubleBuffled := true
 
procedure TForm3.Timer2Timer(Sender: TObject);
begin
t:=t+1;
if t<5 then begin
image1.visible:=True;
image1.picture.loadfromfile('G:/setup.bmp');
image2.visible:=false;
end else begin
image2.Visible:=true;
image2.picture.loadfromfile('G:setup2.bmp');
Image1 .Visible :=false;
end;
if t>5 then t:=0;
end;

procedure TForm3.Timer3Timer(Sender: TObject);
begin
label1.top:=label1.top-1;//将label1组件向上移动
//如果label1显示完毕,则重新开始
if (label1.top<-label1.width-14)then
label1.Top :=panel1.Height;
end;
就可以啦!
 
后退
顶部