C++ Builder 的 TGIFImage 类所在的头文件:
类/模板 |
描述 |
头文件 (XE2 之后) |
头文件 (XE 之前) |
TGIFImage |
.gif 图片/动画 |
#include <Vcl.Imaging.GIFImg.hpp> |
#include <GIFImg.hpp> |
相关链接:
TGIFImage, TImage
通过 TImage 加载并且显示 gif 动画
默认情况,TImage 加载的 gif 只显示第一帧画面,需要写程序设定 gif 显示动画和动画的速度:
Image1->Picture->LoadFromFile(L"D:\\1.gif");
TGIFImage *lpGif = dynamic_cast<TGIFImage*>(Image1->Picture->Graphic);
if(lpGif)
{
lpGif->AnimationSpeed = 100;
lpGif->Animate = true;
} |
通过 AnimationSpeed 属性设定动画的速度 (%),范围是 0 ~ 1000,数值越大速度越快,100 是正常速度 (100%)。
通过 Animate 属性运行或停止动画,true 为运行,false 为停止动画。
把 gif 动画加载到 TGIFImage,然后通过 TImage 显示出来
TGIFImage *gif = new TGIFImage;
try
{
gif->LoadFromFile(L"D:\\1.gif");
gif->AnimationSpeed = 100;
gif->Animate = true;
Image1->Picture->Assign(gif);
}
__finally
{
delete gif;
} |
通过 AnimationSpeed 属性设定动画的速度 (%),范围是 0 ~ 1000,数值越大速度越快,100 是正常速度 (100%)。
通过 Animate 属性运行或停止动画,true 为运行,false 为停止动画。
直接在画布上输出 TGIFImage 加载的 gif 动画
利用 TGIFImage 的 OnChange 事件刷新显示,会自动循环播放 gif 动画的每一帧,并且也会正确的控制每一帧的显示时间。
在 .h 文件里面,在 Form 的 private: 里面加入声明 GIFImage1 指针和 GifChange 作为 GIFImage1 刷新显示事件的函数。
在 Form 上放一个 TButton 按钮 Button1,在这个按钮的 OnClick 点击事件 Button1Click 里面写加载 gif 动画,
在 Form 上放一个 TPaintBox 控件 PaintBox1,在这个控件的 OnPaint 事件 PaintBox1Paint 写通过画布显示输出 gif 动画:
在 .h 文件里面添加的内容 |
private:
TGIFImage *GIFImage1;
void __fastcall GifChange(System::TObject* Sender); |
在 .cpp 文件里面,加入初始化 GIFImage1 和 GifChange 事件函数。
在 .cpp 文件里面添加的内容 |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
GIFImage1 = NULL;
}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
delete GIFImage1;
GIFImage1 = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(!GIFImage1)
GIFImage1 = new TGIFImage;
// Copyright © Victor Chen, http://www.cppfans.com/
GIFImage1->LoadFromFile(L"D:\\1.gif");
GIFImage1->Animate = true;
GIFImage1->AnimationSpeed = 100;
GIFImage1->OnChange = GifChange;
PaintBox1->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GifChange(System::TObject* Sender)
{
PaintBox1->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
PaintBox1->Canvas->Draw(0,0,GIFImage1);
}
//--------------------------------------------------------------------------- |
|