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图片。
2018-8-10-WPF-播放-gif的更多相关文章
- 申请Office 365一年免费的开发者账号攻略(2018年10月份版本)
要进行Office 365开发,当然需要有完整的Office 365环境才可以.为了便于广大开发人员快速地启动这项工作,微软官方给所有开发人员提供了免费的一年开发者账号 那么如何申请Office ...
- IntelliJ IDEA 最新激活码(截止到2018年10月14日)
IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYX ...
- 新手C#SQL Server使用记录2018.08.10
主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...
- WPF 播放Flash
原文:WPF 播放Flash WPF中没有直接提供播放Flash的控件. 可以使用WebBrowser来打开,代码如下: <Window x:Class="Nankang.Itacat ...
- 01 mybatis框架整体概况(2018.7.10)-
01 mybatis框架整体概况(2018.7.10)- F:\廖雪峰 JavaEE 企业级分布式高级架构师课程\廖雪峰JavaEE一期\第一课(2018.7.10) maven用的是3.39的版本 ...
- 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H)
目录 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛链接 竞赛题目 总结 北京化工大学2018年10月程序设计竞赛部分题解(A,C,E,H) 竞赛事件相关 竞赛 ...
- 富士康的盈利秒杀99%的A股公司:3星|《三联生活周刊》2018年10期
三联生活周刊·最美的数学:天才为何成群到来(2018年10期) 本期专题是数学和成都,我都跳过去没看.其他内容也还有点意思. 总体评价3星. 以下是本期一些内容的摘抄,#号后面是kindle电子版中的 ...
- Burn Down Chart(2018.6.4~2018.6.10)
Burn Down Chart (2018.6.4~2018.6.10) 娄雨禛[前端部分] 曾子轩[后端部分+燃尽图] 前端 1. 娄雨禛+李鑫 1)在总工程中完成跳转,实现图片显示,并发布到Git ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容
2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...
- WPF播放视频
在现在的项目中需要使用到播放视频的功能,本来打算使用VLC来做的.后来发现WPF 4.0之后新增了MediaElement类,可以实现视频播放. <Grid> <Grid.RowDe ...
随机推荐
- 第二节 RabbitMQ配置
原文:第二节 RabbitMQ配置 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87281553 1.配置 ...
- Python的基础类型(int,bool,str):
Python的基础类型(int,bool,str): 1.int -------> 整形:主要用力进行数字计算 2.string ------>字符串:可以保存少量数据并进行相关的操作 3 ...
- java synchronized的四种用法
一 修饰方法 Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来 ...
- 循环结构select 举例
- shell脚本编程测试类型上
一bash的条件测试 判断某需求是否满足,需要由测试机制来实现.专用的测试表达式需要由测试命令辅助完成测试过程. 评估布尔声明,以便用在条件性执行中.若真,则返回0:若假,则返回1. 测试命令:• t ...
- loadRunner之参数关联
录制脚本,对用户名和密码进行参数化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours ...
- string,const char*, char*转换之后还是指向同一片内存地址么?
class Same { public: void reverse(const char* str) { char* A = const_cast<char*>(str); A[] = ' ...
- html生成pdf
/** * 生成pdf * @param string $html 需要生成的内容 */ function pdf($html='<h1 style="color:red"& ...
- 前端每日实战:73# 视频演示如何用纯 CSS 创作一只卡通狐狸
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OEKZed 可交互视频 此视频是可 ...
- Python-字符串str和json格式的转换
str转json str转换为json格式,前提一定需要保证这个str的格式和json是一致的,即左边最外层是大括号,右边的最外层是大括号.如果不一致,推荐用正则进行拆分至和json格式一致1. 通过 ...