【问题标题】:WPF animated GIF Source change on runtime .. but remains static on source changeWPF 动画 GIF 源在运行时更改.. 但在源更改时保持静态
【发布时间】:2014-09-25 23:40:18
【问题描述】:

大家好,请帮忙... 我到底想做的是..在运行时更改动画 GIF 图像源。 然而,图像正在发生变化,但随着图像的动画化,它以某种方式变黑可能是线程正忙!

这是代码!

var image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(@"/BackgroundWorkerWpf;component/Media/p1.gif", UriKind.Relative);
image.EndInit();
ImageBehavior.SetAnimatedSource(img, image);

图像源已根据需要更改,但图像保持静态,就像原始 GIF 图像的快照一样。提前致谢 :)

PS : 我正在使用来自CODEPLEX 的参考库

【问题讨论】:

    标签: c# wpf image animation


    【解决方案1】:

    更改属性动画源后,您应该调用ImageBehavior.SetRepeatBehavior 方法。

    试试下面的代码:

    var image = new BitmapImage();
    image.BeginInit();
    image.UriSource = new Uri(@"/BackgroundWorkerWpf;component/Media/p1.gif", UriKind.Relative);
    image.EndInit();
    ImageBehavior.SetAnimatedSource(img, image);
    ImageBehavior.SetRepeatBehavior(img, new RepeatBehavior(0));
    ImageBehavior.SetRepeatBehavior(img, RepeatBehavior.Forever);
    

    【讨论】:

    • 这适用于 SECOND(即在运行时)时间......但是当我再次更改源第三次时,它再次冻结或保持静态,具体而言,我将重复行为用于第三个源也变了..
    • @IteratioN07 这里回复有点晚,但我今天遇到同样的问题时遇到了这个问题。我找到的解决方案是在稍后更改源时将重复行为更改为“永远” - 所以SetRepeatBehaviour(img, new RepeatBehaviour(0)),然后是SetRepeatBehaviour(img, RepeatBehaviour.Forever)
    • 嘿,我已经使用了上述方法,但它对我不起作用,我想知道为什么。 var image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri(@"Assets/gif-load.gif", UriKind.Relative); image.EndInit(); ImageBehavior.SetAnimatedSource(imgInternet, image); ImageBehavior.SetRepeatBehavior(imgInternet, new RepeatBehavior(0)); ImageBehavior.SetRepeatBehavior(imgInternet, RepeatBehavior.Forever);
    • 当我在 XAML 中设置源时它运行良好。 <Image x:Name="imgInternet" gif:ImageBehavior.AnimatedSource="Assets/gif-load.gif" Width="35" Height="35" Margin="10,0,5,0" />
    • @sohaiby 看看这个项目:github.com/XamlAnimatedGif/WpfAnimatedGif
    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 2011-01-26
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多