WPF中显示GIF图片

原创 2015年10月25日 11:09:53

WPF中显示GIF图片:
WPF很强大,但是他的Image控件却不支持GIF图片,只能显示第一帧。那么如何来显示GIF图片呢?以下有四种方法:
一、 第一种方法:使用MediaElement(实例中页面:DynamicImage1.xaml)
步骤:(实例页面:DynamicImage1.xaml)
1、 前台界面代码:

<MediaElement x:Name="element" LoadedBehavior="Play" Stretch="Fill"    Source="1.gif"                   MediaEnded="MediaElement_MediaEnded"/>

2、 Source路径注意需要设置
复制到输出目录:始终复制
生成操作:无

3、 在播放GIF时,GIF可能被中止,给MediaElement添加MediaEnded事件。

   ((MediaElement)sender).Position = ((MediaElement)sender).Position.Add(TimeSpan.FromMilliseconds(1));

当GIF停止播放时,将MediaElement的位置向后移动1毫秒来处理GIF播放停止问题。
4、 后台代码:

private void MediaElement_MediaEnded(object sender, RoutedEventArgs e)
       {
        ((MediaElement)sender).Position = ((MediaElement)sender).Position.Add(TimeSpan.FromMilliseconds(1));
     }

二、 第二种方法:引用WinForm中控件PictureBox(实例中页面:DynamicImage2.xaml)
步骤:
1、 向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration;
2、 添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件
3、 将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码:

xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"       xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

5、 这样就可以在WindowsFormsHost下放置需要的Windows Form控件了:

<WindowsFormsHost Grid.Column="1" Grid.Row="0">
        <WinFormControls:PictureBox ImageLocation="1.gif" SizeMode="StretchImage"></WinFormControls:PictureBox>            
      </WindowsFormsHost>      

6、 动态图片可以展示了

三、 第三种方法:使用自定义Image控件(实例:CSWPFAnimatedGIF)
(文件来源:https://code.msdn.microsoft.com/CSWPFAnimatedGIF-3029aeb9/sourcecode?fileId=26331&pathId=41660693
步骤:
1、 定义类:CSWPFAnimatedGIF
2、 页面引用类文件:

xmlns:local="clr-namespace:CSWPFAnimatedGIF"

3、 前台显示控件:

<local:AnimatedGIFControl x:Name="GIFCtrl"/>

4、 Properties文件下Resources.resx的cs文件设置:

   internal static System.Drawing.Bitmap ProgressIndicator {
            get {
                object obj = ResourceManager.GetObject("ProgressIndicator", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }

5、 完成
四、 第四种方法:使用自定义GifImage控件
(本经验来源:http://www.cnblogs.com/zhouyinhui/archive/2007/12/23/1011555.html)
1. Gif解码器GifBitmapDecoder
public GifBitmapDecoder(Stream bitmapStream,BitmapCreateOptions createOptions, BitmapCacheOption cacheOption )
bitmapStream
类型: System.IO. Stream
要解码的位图流。
createOptions
类型: System.Windows.Media.Imaging. BitmapCreateOptions
位图图像的初始化选项。
cacheOption
类型: System.Windows.Media.Imaging. BitmapCacheOption
用于位图图像的缓存方法。

  1. 2
    解析GIF图片
    下面取出GIF每帧时间间隔等相关信息。
    GIF结构相关知识:wenku.baidu.com/link?url=slIFAaF4RSVB6jH4RJCKRjoCdU0fWBP3diaXI1t3tnpT3n52yf2b7UCvEt2mMs8OiWtgoSRYSHGzYQ3P7QJbgxCachUy7naTQ566U_uM_Di

  2. 3
    封装GifImage控件
    封装GifImage控件,继承自Image。

  3. 4
    使用GifImage控件



    DataGrid使用2.gif的引用方式为资源。

版权声明:本文为博主原创文章,未经博主允许不得转载。

WPF使用MediaElement显示gif图片

使用MediaElement来显示gif图片,封装控件代码如下: Xaml:
  • SANYUNI
  • SANYUNI
  • 2017年06月22日 17:12
  • 397

WPF 如何显示gif

最近碰到了要显示表情的需求,而表情刚好是gif的图片。 于是用了Image试了下,发现不行,只会显示第一帧,然后上网查了下资料,大致有这么几种方法,都可以实现。 第一种: 使用Winfrom里面的pi...
  • wcc27857285
  • wcc27857285
  • 2016年11月01日 09:52
  • 2431

WPF中GIF不动的问题解决方案。

WPF很强大,但是当WPF的image控件遇到gif时就只读了图片的第一帧,很好很强大! WPF不屑于gif的简单动画! 但是这对程序员来说不大爽啊!急得我眼泪都下来了! 幸好WPF里有Medi...
  • wangsui99
  • wangsui99
  • 2011年08月27日 20:40
  • 2455

在Wpf中使用动态GIF图像的简单方法

Wpf本身的方法如果加载GIF实在是过于复杂,我们可以通过使用winform控件,减少复杂性方法一:利用winform控件 System.Windows.Forms. PictureBox pb ...
  • u012790747
  • u012790747
  • 2015年05月27日 21:26
  • 1768

WPF播放GIF控件完整代码

WPF拥有很强的界面设计能力,可以很方便的做出非常漂亮的界面。但有个问题,WPF没有自己的播放GIF的控件。这让很多想在界面播放动态动画的人不得不使用视频来代替。WPF就真的不能播放GIF动图了吗?当...
  • Libby1984
  • Libby1984
  • 2016年09月14日 09:38
  • 2921

QT中显示GIF图片

在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. ...
  • jack_bro
  • jack_bro
  • 2017年04月13日 18:09
  • 1016

binbinyang---Android实现显示GIF图片

最近.一个朋友跟我说想,我给她弄个闹钟APP软件...功能其实很简单...只需要弄个简单的闹钟.自己设计设计时间.然后时间到了的时候,闹铃放的声音是男朋友录制好的声音...于是就开始整了.... 第一...
  • yangbin0513
  • yangbin0513
  • 2016年11月02日 11:43
  • 2329

Android显示Gif图片

关于android显示gif图片的方法有许多种。我试了许多方法之后,觉得都不是很理想。庆幸的是,查看了这篇博客加载网络gif图片之后,我总算找到了理想的方法,在此博客的基础上,本博客将讲解得更详细,更...
  • u014473226
  • u014473226
  • 2015年08月13日 17:33
  • 740

Qt Gif图片无法显示问题(WINDOWS)

       这几天写QT程序时遇到个问题,本机编译完成的应用程序的Gif正常显示,但移到其他机器上只有png能正常显示,gif和jpg却无法显示.刚开始以为是资源包的关系,然后以为是路径的关系,最后...
  • limiko
  • limiko
  • 2010年05月09日 15:06
  • 4793

iOS 中 GIF 图片的显示方法

iPhone SDK提供了多种动画手段,UIView、UIImageView和CALayer都支持动画。但如何处理常见的gif动画呢?UIWebView提供了答案,代码如下: 1. 使用UIWe...
  • illusion21
  • illusion21
  • 2014年08月25日 13:50
  • 1942
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF中显示GIF图片
举报原因:
原因补充:

(最多只允许输入30个字)