切换Image问题(50分)

  • 主题发起人 主题发起人 夏雨天
  • 开始时间 开始时间

夏雨天

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个form中放两个Image,两个Image的Align := alClient;
用两个按钮进行切换显示,请问如何去掉切换图片时,图片的闪烁。
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Visible := false;
Image2.Visible := false;
Image1.Align := alClient;
Image2.Align := alClient;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Image1.Visible := True;
Image2.Visible := false;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Image1.Visible := false;
Image2.Visible := True;
end;
 
没有闪烁阿,你的是不是D5?我在d6下很正常阿
 
如果不是设visible属性,改为将图片BringToFront或者SendToBack是否会好点
 
不可能呀,我是D6呀。
有没有设置如下属性:
image1.center := true;
image1.center := true;
image1.stretch := true;
image1.stretch := true;
 
在Form1的OnCreate事件里加一句:doublebuffer:= true;
 
改为将图片BringToFront或者SendToBack,我测试好像可以,但要在我项目再试一下。项目
中图片太多,且是调用文件。
 
个人建议:
不要放太多图片,美观是好点,但容易影响速度哦
另外给你一个创建图片的方法,此方法可以部分解决图片太大时的闪烁效果。

var
Bitmap:TBitmap;

procedure Tform1.FormCreate(Sender: TObject);
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0))+'backgroud.bmp');
end;

procedure Tform1.FormPaint(Sender: TObject);
var
x,y:integer;
begin
y:=0;
while y<mainform.Height do
begin x:=0;
while x<mainform.Width do
begin
canvas.Draw(x,y,Bitmap);
//用canvas.Draw函数在指定位置画图
x:=x+Bitmap.Width;
//x步长为位图宽
end;
y:=y+Bitmap.Height;
//y步长为位图高
end;
 
谢谢各位,大家的方法我都试了,还是没有改决我的问题我是使用的TsuiImagePanel控件
有五张图片。还是有闪烁,可能是速度的问题,谢谢大家。我结贴了。
 
后退
顶部