一个专用于显示GIF的控件 GifBox_第1页
一个专用于显示GIF的控件 GifBox_第2页
一个专用于显示GIF的控件 GifBox_第3页
一个专用于显示GIF的控件 GifBox_第4页
一个专用于显示GIF的控件 GifBox_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、GifBox是一个专用于显示GIF图片的控件,当然PictureBox也可以显示,但是当我在写 一个类似QQ表情控件的时候,总感觉它显示GIF的时候有点停顿的感觉,然后就写了这个比较 简单的控件,代码不是很多,但是却得到了我想要的效果。这里介绍下用到得一个重要的.NET框架中的类:ImageAnimator,动画处理包含基于时间的 帧的图像。这是一个全部是静态函数的类,我们看看他包含的几个方法: using System;namespace System.Drawing/摘要:/动画处理包含基于时间的帧的图像。public sealed class ImageAnimator/摘要:/将多帧图

2、像显示为动画。/参数:/ onFrameChangedHandler:/ 一个EventHandler对象,它指定在动画帧发生更改时调用的方法。/ image:/ 要动画处理的System.Drawing.Image对象。/返回结果:/此方法不返回值。public static void Animate(Image image, EventHandler onFrameChangedHandle r);/摘要:/返回一个布尔值,该值指示指定图像是否包含基于时间的帧。/参数:/ image:/要测试的 System.Drawing.Image 对象。/返回结果:/如果指定图像包含基于时间的帧,则

3、此方法返回true;否则返回false。public static bool CanAnimate(Image image);/摘要:/终止正在运行的动画。/ /参数:/ onFrameChangedHandler:/ 一个EventHandler对象,它指定在动画帧发生更改时调用的方法。/ image:/要停止动画处理的System.Drawing.Image对象。/返回结果:/此方法不返回值。public static void StopAnimate(Image image, EventHandler onFrameChangedHand ler);/摘要:/使该帧在当前正被动画处理的所

4、有图像中前移。新帧在下一次呈现图像时绘制。/返回结果:/此方法不返回值。public static void UpdateFrames();/摘要:/使帧在指定的图像中前移。新帧在下一次呈现图像时绘制。此方法只适用于包含基于时间的帧的图像。/参数:/ image:/要为其更新帧的System.Drawing.Image对象。/返回结果:/此方法不返回值。public static void UpdateFrames(Image image);看了就应该很容易就理解这个类和每个方法的作用了。有了这个类,实现我想要的功能就简单了:),继承Control,添加一些需要的 属性,然后最重要的就是重写O

5、nPaint函数了。protected override void OnPaint(PaintEventArgs e)base.OnPaint(e);if (_image != null)/每次画之前更新到图片的下一帧。UpdateImage();e.Graphics.DrawImage(_image,ImageRectangle,0,0,_image.Width,_image.Height,GraphicsUnit.Pixel);ControlPaint.DrawBorder(e.Graphics,ClientRectangle,_borderColor,ButtonBorderStyle.

6、Solid);需要注意的是每次画之前都要更新到图片的下一帧。下面介绍第三种方法,这种方法不需要对ActiveX控件的引用,需要用到我前面写的一篇文章(一 个专用于显示GIF的控件GifBox)中的GifBox控件,看看实现的方法:public bool InsertImageUseGifBox(string path)日田(try捽(IGifBox gif = new GifBox();Igif.BackColor = base.BackColor;Igif.Image = Image.FromFile(path);RichEditOle.InsertControl(gif);return true;catch (Exception)白由return false;通过上面三个方法,我们就可以很方便的把GIF插入到RichTextBox中了,看看使用的代码:日国if(radUseImageOle.Checked)chatRichTextBox1.InsertImageUseImageOle(.Face211.gif);else if (radUseDynamic.Checked)日田chatRi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论