我喜欢使用XAML中的一个Image控件并在间隔1秒内将Image的Source交换给另一个来进行简单的动画处理。

但是当我这样做时,图像会闪烁。我使用以下代码(在TickTimer事件处理程序处):

Uri uri = new Uri("ms-appx:/Sprites/Running/" + y++ + ".png",
              UriKind.RelativeOrAbsolute);
BitmapImage textureBitmap = new BitmapImage(uri);

this.ImageHolder.Source = textureBitmap;


问题出在哪里?我应该缓存BitmapImages吗?

谢谢您的帮助。

最佳答案

尝试在您的xaml中声明StoryBoard

    <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>


因此,您必须将精灵添加到静态资源,然后运行StoryBoard。

关于c# - C#XAML Metro图像动态源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12930661/

10-17 00:23