WPF中显示GIF图片
来源:互联网 发布:it管培生 编辑:程序博客网 时间:2024/05/22 06:43
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
用于位图图像的缓存方法。
2
解析GIF图片
下面取出GIF每帧时间间隔等相关信息。
GIF结构相关知识:wenku.baidu.com/link?url=slIFAaF4RSVB6jH4RJCKRjoCdU0fWBP3diaXI1t3tnpT3n52yf2b7UCvEt2mMs8OiWtgoSRYSHGzYQ3P7QJbgxCachUy7naTQ566U_uM_Di3
封装GifImage控件
封装GifImage控件,继承自Image。4
使用GifImage控件
DataGrid使用2.gif的引用方式为资源。
- WPF中显示GIF图片
- WPF使用MediaElement显示gif图片
- Android中显示gif图片
- QT中显示GIF图片
- [WPF疑难]在WPF中显示动态GIF
- [WPF疑难]在WPF中显示动态GIF
- WPF显示GIF图像
- WPF 如何显示gif
- GDI+中GIF图片的显示
- PictureBox控件中显示GIF动画(图片)
- 在窗口中显示GIF图片
- GDI+中GIF图片的显示
- GDI+中GIF图片的显示
- Android中Gif图片的显示
- form中显示GIF动态图片
- GDI+中GIF图片的显示
- GDI+中GIF图片的显示
- android中使用imageview显示Gif图片
- 物理地址通过什么协议转换为ip地址
- 匈牙利算法示例
- lightoj 1005 - Rooks 【组合数学】
- HTTP报文结构
- MySQL索引背后的数据结构及算法原理
- WPF中显示GIF图片
- 给input文本框添加灰色提示文字
- Android开源组件---CircleImageView的使用
- iOS开发语言
- Session与Cookie的区别
- Spiral Matrix
- 硬币兑换
- CodeForces 7 C. Line(扩展欧几里得)
- apt-get