1. 程式人生 > >WPF使用MediaElement顯示gif圖片

WPF使用MediaElement顯示gif圖片

使用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(); } } }