Rendert转换wpf /代码

时间:2014-07-18 10:33:59

标签: c# wpf

我的视图中有一个图像,我想在特殊事件发生时将图像旋转45度。但我一直都会遇到这个错误:

  

无法解析属性路径中的所有属性引用   'RenderTransform.Angle'

我需要设置什么类型的属性路径才能完成此任务?

var dbAscending = new DoubleAnimation(0, 45, new Duration(TimeSpan.FromMilliseconds(1000)));
var storyboard = new Storyboard();
storyboard.Children.Add(dbAscending);
Storyboard.SetTarget(dbAscending, uc.Cross);
Storyboard.SetTargetProperty(dbAscending, new PropertyPath("RenderTransform.Angle"));
storyboard.Begin();

2 个答案:

答案 0 :(得分:2)

RenderTransform没有Angle属性。确保为要旋转的元素的RenderTranformation属性分配了RotationTransformation。

new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)"

如果您将Rotation添加到TransformGroup,则PropertyPath将是(假设Rotation是该组的第一个子节点):

new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)"

答案 1 :(得分:2)

您必须为图片的RenderTransform分配RotateTransform才能使您的Storyboard正常工作,例如像这样:

<Image RenderTransformOrigin="0.5,0.5" ...>
    <Image.RenderTransform>
        <RotateTransform x:Name="imageRotation"/>
    </Image.RenderTransform>
</Image>

虽然您可以使用Storyboard为其设置动画,但直接在RotateTransform对象上启动动画可能更容易:

var rotationAnimation = new DoubleAnimation(45, TimeSpan.FromSeconds(1));
imageRotation.BeginAnimation(RotateTransform.AngleProperty, rotationAnimation);
相关问题