WPF如何加载一个gif?
WPF how to load a gif?
我不确定我在 window 中加载 gif 做错了什么。如果可能的话,动画 gif 最好,即使它只循环一次(不需要控制它)。
//WPF
<Image Name="ImageViewer1" Height="100" Width="100" Margin="340,178,0,0" />
//Load Gif
public MainWindow()
{
InitializeComponent();
ImageViewer1.Source = new Image(@"giphy.gif");
}
Image Viewer 不支持简单使用。我推荐使用 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();
}
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;
}
我不确定我在 window 中加载 gif 做错了什么。如果可能的话,动画 gif 最好,即使它只循环一次(不需要控制它)。
//WPF
<Image Name="ImageViewer1" Height="100" Width="100" Margin="340,178,0,0" />
//Load Gif
public MainWindow()
{
InitializeComponent();
ImageViewer1.Source = new Image(@"giphy.gif");
}
Image Viewer 不支持简单使用。我推荐使用 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();
}
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;
}