title author date CreateTime categories
WPF 播放 gif
lindexi
2018-08-10 19:16:53 +0800
2018-2-13 17:23:3 +0800
WPF gif

本文告诉大家如何在 WPF 播放 Gif 图片,提供了几个方法进行播放,包括比较性能。

MediaElement 方法

这是比较不推荐的方法,但是使用简单

<MediaElement x:Name="gifMedia"  Source="x.gif" UnloadedBehavior="Manual"  LoadedBehavior="Play" />

参见:WPF使用MediaElement显示gif图片 - CSDN博客

Magick 方法

这个方法请参见博客 WPF 一个性能比较好的 gif 解析库

WinForm 的方法

使用

本文提供的类,可以直接在 Xaml 使用或者在 cs 使用,可以控制开始播放和停止。

在播放的过程中,使用很少的内存。在使用到一定的时间,会自动释放内存。而且比我现在项目使用的播放的 CPU 要少很多,我自己写的 gif 播放需要使用 3% 左右的 CPU,下面这个类使用的 CPU 只有 1% 。当然我的 gif 解析使用的内存会比下面的代码少,不然我就不敢把下面的代码开源了

在 xaml 使用的方法:

            <local:GifImageControl x:Name="Image" Path="2017年3月23日 115958.gif"></local:GifImageControl>

在添加进之后就会自动开始播放

如果需要在后台代码添加,那么可以使用下面代码

        <Grid x:Name="HlosqrrsDnqxv">
</Grid> var image = new GifImageControl("2017年3月23日 115958.gif");
HlosqrrsDnqxv.Children.Add(image);

因为代码很简单,所以需要其他的功能,请看源代码

源码

代码放在 github ,可以直接复制这个类到工程使用。下面代码可以用在正式项目中。

<script src="https://gist.github.com/lindexi/7c6d70c821fcb72f487812e58c564442.js"></script>

项目下载:WPF 使用 WinForm 播放 gif

如果在运行项目出现 异常,那么请把 DeleteObject 方法修改为下面的代码

        [DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool DeleteObject(IntPtr hObject);

打开 .sln 文件,然后按 F5 运行,可以看到占用内存在 120M ,在运行一定时间,回收内存,占用内存70M,而CPU几乎都不需要。

参见:http://hi.baidu.com/mych/blog/item/1eb14f545f12a752564e00be.html

WPF播放GIF控件完整代码 - CSDN博客

如果在运行出现任何问题,请告诉我,上面这个方法不保证可以解决任何的gif图片。

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q138-Q140)
  2. 【2016-10-27】【坚持学习】【Day14】【VS 配置管理器 AssemblyInfo 】
  3. Javascript高级程序设计——基本概念(一)
  4. 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)
  5. 【BZOJ】【3163】【HEOI2013】Eden的新背包问题
  6. Spring下载
  7. 07_RHEL7配置yum源
  8. B - The Accomodation of Students - hdu 2444(最大匹配)
  9. C语言初学 if-else语句判别在ASCII值中小于32的可控制符的类型
  10. cocos2d-x 3.6版连连看
  11. Asterisk 未来之路3.0_0005
  12. 201521123075 《Java程序设计》第14周学习总结
  13. 普通程序员如何转向AI方向(转)
  14. MicroPython实例之TPYBoard开发板控制OLED显示中文
  15. python基础学习(八)元组
  16. 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)
  17. [LeetCode] 345. Reverse Vowels of a String_Easy tag:Two Pointers
  18. erlang-百度云推送Android服务端功能实现-erlang
  19. Multiline ComboBox
  20. state Threads 开源库介绍

热门文章

  1. 【学习总结】Python-3-风格各异的数值类型实例
  2. Nuget--基础连接已经关闭
  3. XMPP即时通讯协议使用(十)——好友关系状态
  4. Codeforces 364E 分治
  5. Python3.5-20190518-廖老师-自我笔记-模块
  6. boost库:函数对象
  7. VIM的一些使用积累
  8. 【LeetCode 33】搜索旋转排序数组
  9. Delphi RegisterHotKey 设置系统热键
  10. JMeter 阶梯式加压测试插件 Stepping Thread Group