代码之家  ›  专栏  ›  技术社区  ›  soren.enemaerke

使用故事板在动画期间更改图像

  •  11
  • soren.enemaerke  · 技术社区  · 16 年前

    我在寻找一种方法来改变 图像 在故事板中,或者更具体地说,更改 Source 指向新图像资源的图像的属性。似乎有一个 StringAnimationUsingKeyFrames 和A DiscreteStringKeyFrame 但这不起作用(据我所知),因为图像的源属性是类型 ImageSource

    我现在的故事板是这样的

    <Storyboard x:Key="TransitionImage">
        <DoubleAnimationUsingKeyFrames
            BeginTime="00:00:00" 
            Storyboard.TargetName="image" 
            Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/>
            <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
        <StringAnimationUsingKeyFrames
            BeginTime="00:00:00"
            Storyboard.TargetName="image"
            Storyboard.TargetProperty="(Image.Source)">
            <!-- This does not work -->
            <DiscreteStringKeyFrame KeyTime="00:00:00.7000000" Value="check_24.png"/>
        </StringAnimationUsingKeyFrames>
        <DoubleAnimationUsingKeyFrames 
            BeginTime="00:00:00" 
            Storyboard.TargetName="image"
            Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/>
            <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
    

    和图像

    <Image x:Name="image" 
           Source="delete_24.png"
           Width="32" Height="32"
           Margin="8"
           RenderTransformOrigin="0.5,0.5">
        <Image.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
            </TransformGroup>
        </Image.RenderTransform>
    </Image>
    

    我能换一下吗 来源 作为故事板的一部分还是我走运了?

    1 回复  |  直到 16 年前
        1
  •  31
  •   Fedor the_drow    12 年前

    好吧,我自己解决了。似乎你必须使用 ObjectAnimationUsingKeyFrames 和 DiscreteObjectKeyFrame 如下所示:

    <ObjectAnimationUsingKeyFrames 
        BeginTime="00:00:00" 
        Storyboard.TargetName="image"
        Storyboard.TargetProperty="(Image.Source)">
        <DiscreteObjectKeyFrame KeyTime="00:00:00.7000000">
            <DiscreteObjectKeyFrame.Value>
                <BitmapImage UriSource="check_24.png" />
            </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
    
    推荐文章