请问!如何能在按钮上播放动画,分不够另开帖!

解决方案 »

  1.   

    Delphi百例里面有一个例子......
      

  2.   

    有可以添加gif的按钮控件
      

  3.   

    unit Unit1;interfaceuses
      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.
      

  4.   

    从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;
      

  5.   

    感谢S.F.(chinasf.cnblogs.com),但是在按这个按钮的时候动画会闪烁!回hellolongbin(一个人[终不似 少年游]) 闪的厉害还是不尽如人意啊,我希望能有一个可以平滑播放动画的按钮,在网上有用VC开发的类,但是DELPHI中应该怎么去实现呢!
      

  6.   

    用一个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;
      

  7.   

    ningkq(大宁),嫌闪烁的话,从TButton 继承过来,处理绘制背景的消息,内部再加入定时器
      

  8.   

    用一个定时器,不断更换BUTTON上的图.符合你要求吗?