如何在WPF上加载GIF?

3
我不确定我在加载窗口中的gif时做错了什么。最好能使用动画的gif,即使它只循环一次也可以(不需要控制它)。
// WPF
<Image Name="ImageViewer1" Height="100" Width="100" Margin="340,178,0,0" />

// 加载Gif动画

public MainWindow()
{
 InitializeComponent();
 ImageViewer1.Source = new Image(@"giphy.gif");
}

尝试在此答案中提供的解决方案:https://dev59.com/T3VC5IYBdhLWcg3wsTZi - sqladmin
2个回答

9

ImageViewer没有提供简单的使用方式。我建议使用MediaElement。 它更简单,并支持GIF动画。

<MediaElement x:Name="gif" MediaEnded="gif_MediaEnded" UnloadedBehavior="Manual" Source=@"giphy.gif" LoadedBehavior="Play" Stretch="None"/>

对于循环:

private void gif_MediaEnded(object sender, RoutedEventArgs e)
{
 gif.Position = new TimeSpan(0, 0, 1);
 gif.Play();
}

1
private void myMedia_MediaEnded(object sender, RoutedEventArgs e)
{
 myMedia.Position = new TimeSpan(0, 0, 1);
 myMedia.Play();
}

private void myMedia_MediaOpened(object sender, RoutedEventArgs e)
{
 if (myMedia.Stretch != Stretch.Uniform)
 {
   myMedia.Stretch = Stretch.Uniform;
 }
 else
 {
   myMedia.Stretch = Stretch.Uniform;
 }

 MediaElement me = sender as MediaElement;
 ScaleTransform newT = new ScaleTransform();
 newT.ScaleX = (16.0 / 9.0) * me.NaturalVideoHeight / me.NaturalVideoWidth;
 newT.ScaleY = 1;
 me.RenderTransform = newT;
}

1
只提供代码的答案往往被认为是低质量的……而且你应该解释一下这个答案对于已经有多年被接受的问题有何补充之处 - Vultuxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接