介绍
这篇文章主要讲解了c# Winform中绘制动画的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
这里介绍一个。net自身携带的类ImageAnimator,这个类类似于控制动画的时间轴,使用ImageAnimator.CanAnimate可以判断一个图片是否为动画,调用ImageAnimator.Animate可以开始播放动画,即每经过一帧的时间触发一次OnFrameChanged委托,我们只要在该委托中将图像的活动帧选至下一帧再迫使界面重绘就可以实现动画效果了。
为了方便以后的使用,我将这些代码整合到了一起,形成一个AnimateImage类,该类提供了CanAnimate, FrameCount,叫做等属性,以及播放(),停止(),重置()等动画常用的方法,代码如下
使用系统; 使用System.Collections.Generic; 使用text; 使用System.Drawing; 使用System.Drawing.Imaging; 名称空间礼物 {///& lt; summary>///表示一类带动画功能的图像。///& lt;/summary> 公开课AnimateImage { 图像形象; FrameDimension FrameDimension;///& lt; summary>///动画当前帧发生改变时触发。///& lt;/summary> 公共事件EventHandler使用系统; 使用System.Collections.Generic; 使用System.ComponentModel; 使用System.Data; 使用System.Drawing; 使用System.Drawing.Imaging; 使用text; 使用System.Windows.Forms; 名称空间礼物 { 公共部分中类Form1:形式 { AnimateImage形象; 公共Form1 () { InitializeComponent (); 形象=new AnimateImage (Image.FromFile (@" C: \管理员文档和设置\ \我的文档、我的照片、未命名.gif")); 的形象。OnFrameChanged +=new EventHandler (image_OnFrameChanged); SetStyle (ControlStyles。OptimizedDoubleBuffer | ControlStyles。AllPaintingInWmPaint | ControlStyles。UserPaint,真正的); } 空白image_OnFrameChanged(对象发送方,EventArgs e) { 无效(); } 私人空间Form1_Load(对象发送方,EventArgs e) { image.Play (); } 私人空间Form1_Paint(对象发送方,PaintEventArgs e) { 锁(image.Image) { e.Graphics.DrawImage(图片。形象,新的点(0,0)); } } 私人空间button1_Click(对象发送方,EventArgs e) { 如果(button1.Text.Equals (“Stop")) { image.Stop (); button1。文本=癙lay"; } 其他的 { image.Play (); button1。文本=癝top"; } 无效(); } 私人空间button2_Click(对象发送方,EventArgs e) { image.Reset (); button1。文本=癙lay"; 无效(); } } }
看完上述内容,是不是对c# Winform中绘制动画的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。