我喜欢在 XAML 中使用一个图像控件制作简单的动画,并以 1 秒的间隔将 Image
的源交换到另一个。
但是当我这样做时,图像会闪烁。我使用此代码(在 Timer
的 Tick
事件处理程序中):
Uri uri = new Uri("ms-appx:/Sprites/Running/" + y++ + ".png",
UriKind.RelativeOrAbsolute);
BitmapImage textureBitmap = new BitmapImage(uri);
this.ImageHolder.Source = textureBitmap;
问题出在哪里?我应该缓存 BitmapImages 吗?
感谢您的帮助。
最佳答案
尝试声明一个 StoryBoard在你的 xaml 中:
<Storyboard>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:0"
Storyboard.TargetName="ImageHolder" Storyboard.TargetProperty="Source">
<DiscreteObjectKeyFrame KeyTime="0:0:0"
Value="{Binding Source={StaticResource Frame1Image}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:1"
Value="{Binding Source={StaticResource Frame2Image}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:2"
Value="{Binding Source={StaticResource Frame3Image}"/>
<!-- etc -->
</ObjectAnimationUsingKeyFrames>
</Storyboard>
因此,您必须将 Sprite 添加到静态资源,并运行 StoryBoard。
关于C# XAML Metro 图像动态源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930661/