Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何重置RotateTransform的角度特性_C#_Wpf_Animation_Angle - Fatal编程技术网

C# 如何重置RotateTransform的角度特性

C# 如何重置RotateTransform的角度特性,c#,wpf,animation,angle,C#,Wpf,Animation,Angle,我有一个画布,其中包含一些元素来显示机器人手臂。此手臂可以通过动画拉伸和缩回 现在我需要初始化手臂并在某些情况下保持折叠状态(不是通过动画)。所以我需要重置旋转变换的角度属性 <Canvas x:Name="RobotArm_Left" Width="60" Height="10" RenderTransformOrigin="0.9167,0.5" Canvas.Top="62.5" Canvas.Left="12.5"> <Canvas.RenderTransfo

我有一个画布,其中包含一些元素来显示机器人手臂。此手臂可以通过动画拉伸和缩回

现在我需要初始化手臂并在某些情况下保持折叠状态(不是通过动画)。所以我需要重置旋转变换的角度属性

 <Canvas x:Name="RobotArm_Left" Width="60" Height="10" RenderTransformOrigin="0.9167,0.5" Canvas.Top="62.5" Canvas.Left="12.5">
    <Canvas.RenderTransform>
        <TransformGroup>                                   
            <RotateTransform x:Name="Rotate_RobotArm_Left" />                                    
        </TransformGroup>
    </Canvas.RenderTransform>
</Canvas>
它们都不起作用

当我观察((RotateTransform)page.FindName(“Rotate\u RobotArm\u Left”).Angle的值时,它是-55

有没有一种方法可以设置属性

否则,在运行动画之前,可以更改“角度”属性。但在动画之后,不能更改该属性


谢谢。

动画值优先于本地设置的值。停止动画(在这种情况下,该值将恢复为其未设置动画的值)或将其设置为所需的值。有关更多信息,请参阅


在这种情况下,使用
SetCurrentValue
有点麻烦,因为您正在替换动画生成的值,而不是将动画作为值源完全删除。换句话说,动画仍然处于活动状态,您只是更改了它报告的值。

另一种方法可能有用:


不要设置旋转动画,而是设置对象属性的动画,并将旋转角度绑定到该对象。这将允许您控制动画,使您不必知道/查找XAML中的元素。

我发现我可以使用这种方式重置:((RotateTransform)page.FindName(“Rotate_RobotArm_Left”)).SetCurrentValue(RotateTransform.AngleProperty,0.0);也应该是感兴趣的。谢谢你的回答。因为运行动画需要一些时间,但初始动画应该马上完成,所以我使用SetCurrentValue函数。这是一个好主意,但需要在关键帧的插值方面做更多的工作。@BruceWu-您可以编写自己的动画类
((RotateTransform)page.FindName("Rotate_RobotArm_Left")).Angle=0; //0 is the init value
((RotateTransform)page.FindName("Rotate_RobotArm_Left")).SetValue(RotateTransform.AngleProperty, 0.0);