3

I am no sure what I am doing wrong to load a gif in the window. An animated gif would be best if possible even if it only looped once (don't need to control it).

// WPF

<Image Name="ImageViewer1" Height="100" Width="100" Margin="340,178,0,0" />

// Load Gif

public MainWindow()
{
 InitializeComponent();
 ImageViewer1.Source = new Image(@"giphy.gif");
}
fatihyildizhan
  • 8,614
  • 7
  • 64
  • 88
DDJ
  • 807
  • 5
  • 13
  • 31
  • try solutions in this answer: http://stackoverflow.com/questions/210922/how-do-i-get-an-animated-gif-to-work-in-wpf – sqladmin Feb 14 '16 at 05:36

2 Answers2

9

ImageViewer not have supported for simple use. I recomended use MediaElement. It's easier and supported gif for animation.

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

And for looping:

private void gif_MediaEnded(object sender, RoutedEventArgs e)
{
 gif.Position = new TimeSpan(0, 0, 1);
 gif.Play();
}
fatihyildizhan
  • 8,614
  • 7
  • 64
  • 88
Nejc Galof
  • 2,538
  • 3
  • 31
  • 70
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;
}
fatihyildizhan
  • 8,614
  • 7
  • 64
  • 88
Phani
  • 11
  • 3
  • 1
    Code-only answers tend to be considered low quality... also you should explain what this answer adds to the question that has had an accepted answer for several years – Vultuxe Aug 26 '21 at 15:21