2018-8-10-WPF-播放-gif
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>
如果在运行项目出现 异常,那么请把 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
如果在运行出现任何问题,请告诉我,上面这个方法不保证可以解决任何的gif图片。
最新文章
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q138-Q140)
- 【2016-10-27】【坚持学习】【Day14】【VS 配置管理器 AssemblyInfo 】
- Javascript高级程序设计——基本概念(一)
- 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)
- 【BZOJ】【3163】【HEOI2013】Eden的新背包问题
- Spring下载
- 07_RHEL7配置yum源
- B - The Accomodation of Students - hdu 2444(最大匹配)
- C语言初学 if-else语句判别在ASCII值中小于32的可控制符的类型
- cocos2d-x 3.6版连连看
- Asterisk 未来之路3.0_0005
- 201521123075 《Java程序设计》第14周学习总结
- 普通程序员如何转向AI方向(转)
- MicroPython实例之TPYBoard开发板控制OLED显示中文
- python基础学习(八)元组
- 框架源码系列七:Spring源码学习之BeanDefinition源码学习(BeanDefinition、Annotation 方式配置的BeanDefinition的解析)
- [LeetCode] 345. Reverse Vowels of a String_Easy tag:Two Pointers
- erlang-百度云推送Android服务端功能实现-erlang
- Multiline ComboBox
- state Threads 开源库介绍