Canvas Windows Phone 8.1 中的移动动画

Canvas moving animation in Windows Phone 8.1

我无法解决 canvas 在 windows phone 8.1 中平滑移出屏幕边界的问题,尽管不透明度 属性 变化很好。

<Storyboard x:Name="moveOut">
   <DoubleAnimation
        Storyboard.TargetProperty="Opacity"
        Storyboard.TargetName="CanvCalling"
        From="1.0" To="0.0" Duration="0:0:1" />
</Storyboard>

我已经使用 PointAnimation 解决了基本体(椭圆、正方形)的问题,但它不适用于 canvas.

以前它使用 ThicknessAnimationMargin 属性 但它在 UWP 和 [=40= 中不起作用] phone 8.1

简述:

我需要使用动画平滑地更改 边距 属性 我想在 XAML,

中完成

我怀疑这是通过RenderTransform

实现的

您可以使用 LayoutTransform,但就平滑度而言,它不如 RenderTransform 干净...如果可以的话,我几乎总是建议使用 RenderTransform,这应该与 XAML 一样平滑动画。

当您使用 LayoutTransform 时,您实际上是将对象移动到新规范,而使用 RenderTransform 时,您只需移动对象的视觉侧。对我来说,LayoutTransform 最适合在裁剪时遇到问题或需要在动画期间更改其他元素的大小/位置时使用。例如...如果您使用 RenderTransform / ScaleTransform / Scale.X 和 Y 并增加项目大小,它只会在视觉上增长。与它的交互也会增加,因此所有用户输入事件都会像视觉上应该的那样工作。 如果您使用与 LayoutTransform 相同的方法,则控件不仅会增加大小,而且它周围的所有对象都会移动或缩小或适应新大小所需的任何内容。一个很好的例子是高度设置为自动的网格行。如果 RenderTransform 对象变大,则行的高度不会改变以适应,但如果使用 LayoutTransform,行将改变以适应新的大小。

希望对您有所帮助。

在 TargetProperty 中使用 CompositeTransform 解决了 XAML 下面...

            <Canvas.RenderTransform>
            <CompositeTransform />
        </Canvas.RenderTransform>

        <Canvas.Resources>
            <Storyboard x:Name="moveTo">
                <DoubleAnimation
        Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)"
                    Storyboard.TargetName="CanvCalling"
        From="0" To="200" Duration="0:0:1" RepeatBehavior="Forever"
        />
            </Storyboard>