C# 显示GIF 暂停 播放 重置
2010-04-02 13:04
309 查看
今天用到显示GIF,需要停止的功能,在网上找到了相关资料,但是有点问题。解决如下
/**/
///
/// 表示一类带动画功能的图像。
///
public class AnimateImage
{
Image image;
FrameDimension frameDimension;
/**/
///
/// 动画当前帧发生改变时触发。
///
public event EventHandler OnFrameChanged;
/**/
///
/// 实例化一个AnimateImage。
///
/// 动画图片。
public AnimateImage(Image img)
{
image = img;
lock (image)
{
mCanAnimate = ImageAnimator.CanAnimate(image);
if (mCanAnimate)
{
Guid[] guid = image.FrameDimensionsList;
frameDimension = new FrameDimension(guid[0]); //旧版没有此句,参照网上添加的代码
mFrameCount = image.GetFrameCount(frameDimension);
}
}
}
bool mCanAnimate; //是否具有动画的图片
int mFrameCount = 1, mCurrentFrame = 0;
/**/
///
/// 图片。
///
public Image Image
{
get { return image; }
}
/**/
///
/// 是否动画。
///
public bool CanAnimate
{
get { return mCanAnimate; }
}
/**/
///
/// 总帧数。
///
public int FrameCount
{
get { return mFrameCount; }
}
/**/
///
/// 播放的当前帧。
///
public int CurrentFrame
{
get { return mCurrentFrame; }
}
/**/
///
/// 播放这个动画。
///
public void Play()
{
if (mCanAnimate)
{
lock (image)
{
ImageAnimator.Animate(image, new EventHandler(FrameChanged));
}
}
}
/**/
///
/// 停止播放。
///
public void Stop()
{
if (mCanAnimate)
{
lock (image)
{
ImageAnimator.StopAnimate(image, new EventHandler(FrameChanged));
}
}
}
/**/
///
/// 重置动画,使之停止在第0帧位置上。
///
public void Reset()
{
if (mCanAnimate)
{
ImageAnimator.StopAnimate(image, new EventHandler(FrameChanged));
mCurrentFrame = 0; //这里修改了去掉旧的代码,添加下一行代码。旧代码并没有显示第一帧。FrameChanged没有执行,因此手动执行
FrameChanged(null, null);
}
}
private void FrameChanged(object sender, EventArgs e)
{
mCurrentFrame = mCurrentFrame + 1 >= mFrameCount ? 0 : mCurrentFrame + 1;
lock (image)
{
image.SelectActiveFrame(frameDimension, mCurrentFrame);
}
if (OnFrameChanged != null)
{
OnFrameChanged(image, e);
}
}
}
/**/
///
/// 表示一类带动画功能的图像。
///
public class AnimateImage
{
Image image;
FrameDimension frameDimension;
/**/
///
/// 动画当前帧发生改变时触发。
///
public event EventHandler OnFrameChanged;
/**/
///
/// 实例化一个AnimateImage。
///
/// 动画图片。
public AnimateImage(Image img)
{
image = img;
lock (image)
{
mCanAnimate = ImageAnimator.CanAnimate(image);
if (mCanAnimate)
{
Guid[] guid = image.FrameDimensionsList;
frameDimension = new FrameDimension(guid[0]); //旧版没有此句,参照网上添加的代码
mFrameCount = image.GetFrameCount(frameDimension);
}
}
}
bool mCanAnimate; //是否具有动画的图片
int mFrameCount = 1, mCurrentFrame = 0;
/**/
///
/// 图片。
///
public Image Image
{
get { return image; }
}
/**/
///
/// 是否动画。
///
public bool CanAnimate
{
get { return mCanAnimate; }
}
/**/
///
/// 总帧数。
///
public int FrameCount
{
get { return mFrameCount; }
}
/**/
///
/// 播放的当前帧。
///
public int CurrentFrame
{
get { return mCurrentFrame; }
}
/**/
///
/// 播放这个动画。
///
public void Play()
{
if (mCanAnimate)
{
lock (image)
{
ImageAnimator.Animate(image, new EventHandler(FrameChanged));
}
}
}
/**/
///
/// 停止播放。
///
public void Stop()
{
if (mCanAnimate)
{
lock (image)
{
ImageAnimator.StopAnimate(image, new EventHandler(FrameChanged));
}
}
}
/**/
///
/// 重置动画,使之停止在第0帧位置上。
///
public void Reset()
{
if (mCanAnimate)
{
ImageAnimator.StopAnimate(image, new EventHandler(FrameChanged));
mCurrentFrame = 0; //这里修改了去掉旧的代码,添加下一行代码。旧代码并没有显示第一帧。FrameChanged没有执行,因此手动执行
FrameChanged(null, null);
}
}
private void FrameChanged(object sender, EventArgs e)
{
mCurrentFrame = mCurrentFrame + 1 >= mFrameCount ? 0 : mCurrentFrame + 1;
lock (image)
{
image.SelectActiveFrame(frameDimension, mCurrentFrame);
}
if (OnFrameChanged != null)
{
OnFrameChanged(image, e);
}
}
}
相关文章推荐
- android webView 无法播放视频,无法暂停,继续播放视频问题,无法根据浏览器居中显示内容问题
- 初级音乐播放器——播放存储卡上的一首音乐,能够显示歌曲名和播放进度,并且能够播放和暂停(没有SD卡会报错)
- .net学习:显示/播放Gif动画
- 播放GIF时控制下一桢的显示
- gifplayer-可控制GIF动画图片播放和暂停jQuery插件
- 用as控制音效的播放、暂停、停止及时间显示
- winform C# 显示动画——这里用GIF格式——来自MSDN
- .net 显示/播放 Gif动画
- [FAQ15257][Audio App]如何在通知栏上显示 music 播放/暂停 的控件
- .C#窗体上怎么显示动态图片如gif
- 显示gif动画(帧动画的播放)
- Windows Mobile C#实现GIF图片播放
- wxwidgets中分解GIF动画图片并显示播放
- 用C#和vs2015编写了一个简单音乐播放器,实现功能,多条音乐导入,播放、暂停、上下曲。采用vs2105自带的一个播放器控件
- [Windows Mobile] C#实现GIF图片播放
- Android 动图 WebP Gif 的 播放 和 暂停
- 最好用Unity 3D制作小地图,显示、隐藏小地图和背景音乐播放与暂停 [复制链接]
- 自学QT之QMovie播放gif(播放、暂停和继续)
- 显示gif动画(帧动画的播放)
- c#Winform程序,让pictureBox显示图像(包含GIF),并且不被占用,能即时删除图片。