VC.NET简单实现GIF动画
2006-07-23 11:34:36 来源:WEB开发网核心提示:本文示例源代码或素材下载 自从gif动画格式推出这十几年来,可是忙坏了C/C++的程序员,VC.NET简单实现GIF动画,远的不说,就说这几年吧,已经可以正确显示GIF格式的动画了,呵呵简单吧,各种方法可谓五花八门,有的直读文件
本文示例源代码或素材下载
自从gif动画格式推出这十几年来,可是忙坏了C/C++的程序员。远的不说,就说这几年吧,各种方法可谓五花八门,有的直读文件,一行一行不厌其烦的分析;有的使用IPicture,大把大把的玩接口;有的封装成COM,谁也不知道他怎么实现的......现在有了GDI+,大家更忙活了,前几天看见 獾猪哥哥在《GDI+中GIF图片的显示》中用到的方法,深感麻烦,所以写了这篇文章。
其实只要使用.net框架封装好的几个函数,就能轻松搞定了,这里要用到的工具是VS.net2003。
第一步:新建一个.Net窗体工程
第二步:添加成员变量和消息(就是行为和外观啦),只要双击空白处系统就会自动填写默认函数,添加图中的三个函数就够了。
第三步:添加成员变量image及在Form1_Load中初始化
private:
Image *image;
private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)
{
//按路径读入文件
image=Image::FromFile(L"测试图片.GIF");
}
private: System::Void Form1_Closed(System::Object * sender, System::EventArgs * e)
{
if(image) image->Dispose();
}
第四步:好了,动画文件已经读入,现在的任务是把它显示出来
private: System::Void Form1_Paint(System::Object * sender, System::Windows::Forms::PaintEventArgs * e)
{
//在Form1_Paint中启用动画,这个函数的功能是读取图片中每个对象的时间信息,然后每到一次时间就调用一次OnPaintGIF
ImageAnimator::Animate(image, new EventHandler(this,OnPaintGIF));
//显示图片
e->Graphics->DrawImage(0,0,image->Width,image->Height);
//将图片按照时间间隔向后翻一页
ImageAnimator::UpdateFrames(image);
}
private: System::Void OnPaintGIF(Object* sender, EventArgs* e)
{
//时间到啦,该显示下一张图啦,置显示区域无效
this->Invalidate();
}
到此,已经可以正确显示GIF格式的动画了,呵呵简单吧,才几行就解决了。
更多精彩
赞助商链接