Delphi7 我想用Timer控件让6个图片循环出现(这六个图片是挨着的)

2024-12-29 02:47:49
推荐回答(3个)
回答1:

有一个简单的办法:
1、在窗体中放6个TImage控件,并为它们分别设置相应的Picture属性,放置不同的图片内容;
2、将6个TImage控件的大小调整为一致;
3、将6个TImage控件的Visible属性都设置为False;
4、在单元的Private段申明一个变量FCur:Integer;
5、在Timer的OnTimer事件中写代码,大意如下:
Image1.visiable:=true;
Image2.visiable:=false;

示例代码如下:(纯手工打造啊!)

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
FCur:Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
FCur:=0;
for i:=1 to 6 do
begin
//设置6个Image控件的上、左、高、宽。
//它们的名字需要为Image1~Image6
(FindComponent('Image'+IntToStr(i)) as TImage).Visible:=false;
(FindComponent('Image'+IntToStr(i)) as TImage).Left:=10;
(FindComponent('Image'+IntToStr(i)) as TImage).Top:=10;
(FindComponent('Image'+IntToStr(i)) as TImage).Width:=100;
(FindComponent('Image'+IntToStr(i)) as TImage).Height:=100;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
inc(FCur);
for i:=1 to 6 do
begin
//先把所有Image隐藏
(FindComponent('Image'+IntToStr(i)) as TImage).Visible:=false;
end;
//显示当前的Image
(FindComponent('Image'+IntToStr(FCur)) as TImage).Visible:=true;
if FCur>=6 then
FCur:=0;
end;
end.

回答2:

用flash做出这种效果后,以对象的形式插入到窗体中!

回答3:

首先定义一个计数器cnt,它存储1~6之中的某个数值。
在Timer的时间里,每单位时间做如下事件:
if cnt=1 then …… else
if cnt=2 then …… else
if cnt=3 then …… else
……
inc(cnt);
if cnt=7 then cnt:=1;
其中“……”代表的是 “将某个图片设置为可见,其他图片不可见”。

其实看起来这个东西很麻烦,代码也不好看,但是思路较为简单,还有一种常用的方法:
先将所有图片放进去,统统设置为不可见。
然后放着一张图片,picture属性设置为nil,每单位时间将图片的picture属性修改为那几张图片的picture