WPF 中Image切换ImageSource做动画

在WPF中,我想通过连续改变Image的值来做动画效果,可是当实现后发现CPU占用出去的高,经测试发是imgsourceconverter的问题。所以
请问各位人兄,是否有提高性能的方法,或者其它用C#实现高效动画播放的方法。数据源是一堆连续的图片。
感谢兄弟的回答,不过我这儿的情况可能说得不是很清楚。我下面再说说
我这儿有一堆连续的图片从网络上发过来,我每接受一张就显示,因为图片是连续的,所以会产生动画视频效果。
这个是确的。现在的问题是,我采用改变Image的属性ImageSource的方法来加载图片,CPU性能会很底。除此之外,我想用C#在WPF上直接绘图(不知道WPF里可以不)或许是一种方法,但是我不知道该怎么做,网上也没有找到适合的资料。烦请有这方面经验的朋友些能提供一些实质性的解决方案。代码或者可以实现的思路。
把一张张连续的显示在WPF用户界面上以便形成动画效果。

用连续改变image的方法来实现动画应该不是一个好主意
这就等于在一帧一帧放视频啊 性能肯定高不到哪里去的

最好是应该用矢量path来animation啊,这才是WPF原生支持的动画效果

不过考虑到你手上已经是一堆连续图片了,如果一定要一张一张播放的话,那可能就需要注意加载图片的大小和时机了。
如果所需要的大小没有那么大,就不要把原本很大的图都加载了,加载一个小的copy,还有就是事先把要用的图都加载好,不要到要播放的时候再在XAML改变Image的Source属性

XAML里Source属性是用string的,当然要用converter转换再加载对应的图片。提前加载好,后台代码直接更改Source属性……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-26
在播放动画前用一个泛型的集合先把所以图片都储存起来,这样就不用转换了

public class myImage
{
public ImageSource AnimationImage { get; private set; }

public myImage(ImageSource image)
{
AnimationImage = image;
}
}

public class myImageCollection : List<myImage>
{
public void addImage(ImageSource image)
{
Add(new myImage(image));
}
}

在一个循环语句里每隔一个间隔就读集合,设置前台的ImageSource就可以播动画了