WPF使用MediaElement显示gif图片
2024-08-31 21:28:47
版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
}
}
}
最新文章
- [刘阳Java]_避开环境配置快速的使用Java的开发工具_第5讲
- HDU 4939 Stupid Tower Defense(dp)
- 论文笔记之:Deep Attention Recurrent Q-Network
- 【Android】Android SDK Manager更新慢/失败的问题
- mybatis中:returned more than one row, where no more than one was expected.异常
- 玩转Android之Drawable的使用
- NetworkOnMainThreadException
- WebService它CXF注释错误(两)
- Pycharm之远程编程
- 每天一个Linux命令(23)--linux 目录结构(一)
- 基于puppet分布式集群管理公有云多租户的架构浅谈
- vs code 的便捷使用
- CF786B Legacy(线段树优化建图)
- ms17_010_psexec
- aufac在mvc中多线程
- drf信号量
- 微信小程序——报错汇总
- lemon special judge模板
- 2018上C语言程序设计(高级)作业- 第3次作业
- chrome inspect 远程调试H5
热门文章
- [TypeStyle] Style CSS pseudo elements with TypeStyle
- [ES7] Handle Errors in Asynchronous Functions
- [Docker] Download and Remove Docker Images
- ios开发网络学习六:设置队列请求与RunLoop
- IdentityServer4实战 - JWT Token Issuer 详解
- 诊断并解决CentOS SSH连接慢的方法
- Qt 学习: 视图选择 (QItemSelectionModel)
- C++ 工具类 —— 词条类(Entry)
- [WPF]VS2019打包WPF程序
- [Ramda] Difference between R.converge and R.useWith