正 文

用Visual C++.NET简单实现GIF动画


www.7dspace.com  更新日期:2006-1-13 1:09:30  七度空间



  自从gif动画格式推出这十几年来,可是忙坏了C/C++的程序员。远的不说,就说这几年吧,各种方法可谓五花八门,有的直读文件,一行一行不厌其烦的分析;有的使用IPicture,大把大把的玩接口;有的封装成COM,谁也不知道他怎么实现的......现在有了GDI+,大家更忙活了,所以我写了这篇文章。

  其实只要使用.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格式的动画了,简单吧,才几行就解决了。

2页,页码:[1] [2] 

上一篇:Title的写法
下一篇:保护隐私 让主流聊天工具实现加密聊天
标题:用Visual C++.NET简单实现GIF动画 作者:caeser2 来源:vckbase ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐