原文:WPF使用MediaElement显示gif图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SANYUNI/article/details/73608771

使用MediaElement来显示gif图片,封装控件代码如下:

Xaml:

<UserControl x:Class="giftest01.GifImage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:giftest01"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Border BorderBrush="{Binding RelativeSource={RelativeSource TemplatedParent},Path=BorderBrush}"
BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent},Path=BorderThickness}">
<MediaElement x:Name="gifMedia" MediaEnded="gifMedia_MediaEnded" UnloadedBehavior="Manual" LoadedBehavior="Play" />
</Border>
</UserControl>

cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace giftest01
{
/// <summary>
/// GifImage.xaml 的交互逻辑
/// </summary>
public partial class GifImage : UserControl
{
public GifImage()
{
InitializeComponent();
} public Uri Source
{
get { return (Uri)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
} // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SourceProperty =
DependencyProperty.Register("Source", typeof(Uri), typeof(GifImage), new PropertyMetadata(null,(sender,p)=> {
(sender as GifImage).UpdateSource();
})); private void UpdateSource()
{
gifMedia.Source = Source;
gifMedia.Play();
} private void gifMedia_MediaEnded(object sender, RoutedEventArgs e)
{
gifMedia.Position = new TimeSpan(0, 0, 1);
gifMedia.Play(); }
}
}

最新文章

  1. [刘阳Java]_避开环境配置快速的使用Java的开发工具_第5讲
  2. HDU 4939 Stupid Tower Defense(dp)
  3. 论文笔记之:Deep Attention Recurrent Q-Network
  4. 【Android】Android SDK Manager更新慢/失败的问题
  5. mybatis中:returned more than one row, where no more than one was expected.异常
  6. 玩转Android之Drawable的使用
  7. NetworkOnMainThreadException
  8. WebService它CXF注释错误(两)
  9. Pycharm之远程编程
  10. 每天一个Linux命令(23)--linux 目录结构(一)
  11. 基于puppet分布式集群管理公有云多租户的架构浅谈
  12. vs code 的便捷使用
  13. CF786B Legacy(线段树优化建图)
  14. ms17_010_psexec
  15. aufac在mvc中多线程
  16. drf信号量
  17. 微信小程序——报错汇总
  18. lemon special judge模板
  19. 2018上C语言程序设计(高级)作业- 第3次作业
  20. chrome inspect 远程调试H5

热门文章

  1. [TypeStyle] Style CSS pseudo elements with TypeStyle
  2. [ES7] Handle Errors in Asynchronous Functions
  3. [Docker] Download and Remove Docker Images
  4. ios开发网络学习六:设置队列请求与RunLoop
  5. IdentityServer4实战 - JWT Token Issuer 详解
  6. 诊断并解决CentOS SSH连接慢的方法
  7. Qt 学习: 视图选择 (QItemSelectionModel)
  8. C++ 工具类 —— 词条类(Entry)
  9. [WPF]VS2019打包WPF程序
  10. [Ramda] Difference between R.converge and R.useWith