【转】在WPF显示动态GIF图片
原贴:https://www.cnblogs.com/fanful/p/12681728.html
WPF
中是不支持直接预览GIF
图片的
<Image Source="1.gif"/>
上面这种用法是预览的GIF
图片是静止不动的。
通过使用WpfAnimatedGif
我们可以在WPF
应用程序中预览、控制GIF图片。
WpfAnimatedGif
的gitbub
地址
GitHub - XamlAnimatedGif/WpfAnimatedGif: A simple library to display animated GIF images in WPF, usable in XAML or in code.
WpfAnimatedGif
的使用方法
https://github.com/XamlAnimatedGif/WpfAnimatedGif/wiki
通过NuGet
引入包
xaml
中使用
- 声明xml命名空间
xmlns:gif="http://wpfanimatedgif.codeplex.com"
- 在
Image
控件中,使用ImageBehavior.AnimatedSource
代替Source
<Image gif:ImageBehavior.AnimatedSource="1.gif"/>
以下是完整代码:
<Window x:Class="Gif.GifWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Gif"xmlns:gif="http://wpfanimatedgif.codeplex.com"mc:Ignorable="d"Title="GifWindow" Height="450" Width="800"><Grid><Image gif:ImageBehavior.AnimatedSource="1.gif"/></Grid>
</Window>
运行后就可以看到效果了。
如果想在设计状态下就看到效果,只需将ImageBehavior.AnimateInDesignMode
属性设置为true
可以在window元素中设置,控制整个window内部所有Image
控件
<Window x:Class="Gif.GifWindow"xmlns:gif="http://wpfanimatedgif.codeplex.com"gif:ImageBehavior.AnimateInDesignMode="True">
也可以在Image
元素内设置,只控制该元素
<Image gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.AnimateInDesignMode="True"/>
设置ImageBehavior.RepeatBehavior
属性控制播放行为
<!--播放3次-->
<Image gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.RepeatBehavior="3x"/><!--播放10秒-->
<Image gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.RepeatBehavior="0:0:10"/><!--永久播放-->
<Image gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.RepeatBehavior="Forever"/>
<object property="iterationCountx"/>-or-<object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>-or-<object property="[days.]hours:minutes"/>-or-<object property="days"/>-or-<object property="Forever"/>
该属性的默认值为0x
,表示使用GIF
图片自身的信息。
以上所有属性都支持使用绑定的方式设置。
代码中使用
var image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri("1.gif",UriKind.Relative);
image.EndInit();
WpfAnimatedGif.ImageBehavior.SetAnimatedSource(img, image);
<Image x:Name="img"/>
控制播放次数
// Repeat 3 times
ImageBehavior.SetRepeatBehavior(img, new RepeatBehavior(3));// Repeat for 10 seconds
ImageBehavior.SetRepeatBehavior(img, new RepeatBehavior(TimeSpan.FromSeconds(10)));// Repeat forever
ImageBehavior.SetRepeatBehavior(img, RepeatBehavior.Forever);
播放完成回调事件
<Image gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.RepeatBehavior="3x" gif:ImageBehavior.AnimationCompleted="Image_AnimationCompleted"/>
当播放次数为Forever
时,永远不会触发该事件。
手动控制播放、暂停、跳转到哪个画面
获取Image
控件的ImageAnimationController
var controller = ImageBehavior.GetAnimationController(imageControl);
// 暂停
controller.Pause();// 继续
controller.Play();// 跳转到最后一个画面
controller.GotoFrame(controller.FrameCount - 1);
你可能不想让图片自动播放,只需设置ImageBehavior.AutoStart
属性即可。
<Image x:Name="img" gif:ImageBehavior.AnimatedSource="1.gif" gif:ImageBehavior.AutoStart="False"/>
通过订阅CurrentFrameChanged
事件可以监听GIF
画面的改变
controller.CurrentFrameChanged += Controller_CurrentFrameChanged;
private void Controller_CurrentFrameChanged(object sender, EventArgs e)
{}
当animation
没有完全加载的时候,GetAnimationController
方法会返回null
,通过订阅AnimationLoaded
事件避免。
【转】在WPF显示动态GIF图片相关推荐
- WPF 动态更换图片路径
wpf中动态修改图片路径,其实很简单,有个小伙伴有疑问,绑定了source,为什么不能显示图片呢... 通过绑定,修改图片路径,动态显示图片,效果如下: 图片支持本地路径和网络路径,下面就来看看如何做 ...
- Android中显示动态图片
通过Gifview.jar来实现Android应用中显示动态图片 效果图: 1.下载Gifview.jar 下载地址:http://download.csdn.net/detail/qq_26650 ...
- QT 显示动态GIF
Qt 显示动态gif图片有以下几种方法: 方法一:利用QMovie 显示 QMovie *movie = new QMovie(":/GifPic/wait.gif");ui-&g ...
- 在WPF中显示动态GIF(转)
http://www.silverlightchina.net/html/study/WPF/2011/0824/9965.html 在我们寻求帮助的时候,最不愿意听到的答复是:很抱歉,在当前版本的产 ...
- java jframe显示图片_java怎么在JFrame中显示动态图片
java怎么在JFrame中显示动态图片 (2012-09-16 23:39:54) 标签: 杂谈 import java.awt.Graphics; import javax.swing.Image ...
- jQuery动态改变图片显示大小(修改)
当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸.通过搜索,我们可以从网上找到实现此功能的jQuery代码如下.这段代码可以使图片的大小保持 ...
- WP8.1开发中关于如何显示.gif格式动态格式图片方法
这几天又遇到个问题,就是如何显示动态图片,本来以为和显示静态图片一样,谁知不行,在网上一查才知道WP8.1不支持.gif格式动态图片的显示: 后来又在MSDN论坛上查找,也有人问类似的问题,后来就大概 ...
- C# WPF 显示图片和视频显示 EmuguCv、AForge.Net测试
C# WPF 显示图片和视频显示 EmuguCv.AForge.Net测试 原文:C# WPF 显示图片和视频显示 EmuguCv.AForge.Net测试 WPF 没有用到 PictureBox, ...
- Qt 编程指南 8 显示静态小图片和动态大图片
显示控件概览 图片浏览示例 第一行是一个标签控件,objectName 为 labelShow,文本内容清空,因为是用来显示图片用的. 主界面第二行的控件是四个普通按钮 第一个按钮文本是 " ...
最新文章
- 【代码实现接口测试】Requests库
- 游标 和 锁的概述
- iOS7应用开发6:UINavigation, UITabbar控制器的多态性
- linux重置root密码_重置丢失的Linux root密码,错误密码的历史记录,Python,Ruby,课堂解决方案等
- python通过什么连接数据库_如何使用python连接数据库?
- forms、forms_toolbar例子理解
- 你的努力,是否符合你的预期?
- 十五部必藏之经典日剧(给喜欢怀旧的朋友)--转贴,的确经典,还有很多没看过,不过排名前二都看了,呵呵...
- oracle 11g 映像文件有效 但不适用于此计算机类型,《计算机应用基础》期末考试模拟练习题(含答案)...
- 计算机不显示固态硬盘,电脑重启后读不到固态硬盘怎么办
- jQuery中关于jQuery.fn.init.prototype = jQuery.fn的解读
- 开口式霍尔电流传感器如何助力直流配电改造?
- 网站如何添加访客统计代码
- hadoop 集群txid不一致
- 用C语言算两个数的商和
- 一般总账科目 调整 为统驭科目时报错:只以本位币计的统驭科目余额未定义
- Curio for Mac(头脑风暴思维导图)
- 局域网语音对讲系统_IP广播对讲系统停车场解决方案
- 供应链计划的五个步骤,你知道吗?
- PS快捷键大法,初级低配版