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

就是12345612345612......这样,出现2时隐藏1,出现3时隐藏2......各位高手指点啊我是菜鸟... 就是1 2 3 4 5 6 1 2 3 4 5 6 1 2......这样,出现2时隐藏1,出现3时隐藏2......

各位高手指点啊 我是菜鸟
展开
 我来答
橘子冰的一隅角落eQ
2012-07-05 · TA获得超过848个赞
知道小有建树答主
回答量:761
采纳率:0%
帮助的人:509万
展开全部
有一个简单的办法:
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.
更多追问追答
追问
如果我不打上面那些长宽高的代码直接打下面的行吗?
追答
可以啊,如果那样,你需要提前把6个TImage控件的大小设置好。
而且,代码你也不需要打,只需要放好控件,把我给你的代码复制到相应位置就行了。
w达达w
2012-07-05 · 超过16用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:45.4万
展开全部
用flash做出这种效果后,以对象的形式插入到窗体中!
追问
要求是用Timer控件哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
425524763
2012-07-05 · TA获得超过344个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:197万
展开全部
首先定义一个计数器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
更多追问追答
追问
我是新手 能给我具体点的代码吗 谢谢了
追答
delphi 不是lazarus,它有它的“可视化编程”,需要用户自行对控件进行操作,仅仅使用代码,是无法编译的,不信你可以编译一下楼上的代码。
新手的话建议你先熟悉一下delphi的编程环境以及各种控件的用法,不要一上来就想要实现“让6个图片变幻……之类的”,先去学习基础,才能学会啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式