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