我的大难题!

ningkq 2005-09-19 10:10:29
请问!如何能在按钮上播放动画,分不够另开帖!
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdzeng 2005-09-20
  • 打赏
  • 举报
回复
用一个TImageList保存8幅BMP

------------------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
var
i : Integer;
bmp : TBitmap;
begin
if BitBtn1.Tag>=7 then
begin
BitBtn1.Tag := 0;
end;

bmp := TBitmap.Create;
bmp.Width := ImageList1.Width;
bmp.Height := ImageList1.Height;

ImageList1.GetBitmap(BitBtn1.Tag,bmp);
BitBtn1.Glyph := bmp;

i := BitBtn1.Tag;
Inc(i);
BitBtn1.Tag := i;
bmp.Free;
end;
ningkq 2005-09-20
  • 打赏
  • 举报
回复
感谢S.F.(chinasf.cnblogs.com),但是在按这个按钮的时候动画会闪烁!

回hellolongbin(一个人[终不似 少年游]) 闪的厉害

还是不尽如人意啊,我希望能有一个可以平滑播放动画的按钮,在网上有用VC开发的类,但是DELPHI中应该怎么去实现呢!
hellolongbin 2005-09-20
  • 打赏
  • 举报
回复
从button上直接显示gif是不大好实现的,不过可以采用SF的方法,通过定时改变button的图片来实现动画效果
如果用bitbtn或者speedbutton会更简单一些

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if i=5 then i:=1;
inc(i);
BitBtn1.Glyph.LoadFromFile('D:\'+inttostr(i)+'.bmp');//这里修改要显示的一系列图片路径和名称


可以通过设置timer的Interval属性来控制图片改变的频率
end;
abc3000 2005-09-20
  • 打赏
  • 举报
回复
用一个定时器,不断更换BUTTON上的图.

符合你要求吗?
S.F. 2005-09-20
  • 打赏
  • 举报
回复
ningkq(大宁),嫌闪烁的话,从TButton 继承过来,处理绘制背景的消息,内部再加入定时器
S.F. 2005-09-19
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton; //放一个button,你可以设置一下enabled 属性看看效果
Timer1: TTimer; //timer 组件,更换图象;
ImageList1: TImageList; //imagelist ,增加几组图象
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
c:TCanvas; //画布
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ImageList1.Tag<ImageList1.Count-1 then
begin
ImageList1.Draw(c,0,0,imageList1.Tag+1,button1.Enabled); //绘制到目标
imagelist1.Tag := imagelist1.Tag+1;
end else imagelist1.Tag :=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
c:=TCanvas.Create;
c.Handle := GetDc(self.Button1.Handle); //获取dc

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
c.Free; //释放
end;

end.
setfocus 2005-09-19
  • 打赏
  • 举报
回复
有可以添加gif的按钮控件
smiler007 2005-09-19
  • 打赏
  • 举报
回复
Delphi百例里面有一个例子......

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧