如何在WPF中进行旋转

时间:2015-10-28 05:03:17

标签: wpf animation

我是wpf的初学者,我想要旋转一个TextBlock,但我有错误:"无法解析属性路径中的所有属性引用' RotateTransform.Angle'。验证适用的对象是否支持属性。"

 <TextBlock Grid.Row="1" Grid.Column="1" RenderTransformOrigin="0.5,0.5" Style="{StaticResource Rotate}">
        <TextBlock.RenderTransform>
            <TransformGroup>
                <RotateTransform Angle="-16.308"/>
            </TransformGroup>
        </TextBlock.RenderTransform>
        <TextBlock.Background>
            <ImageBrush ImageSource="image/1.png"></ImageBrush>
        </TextBlock.Background>
    </TextBlock>

这是我的风格

<Style x:Key="Rotate"  TargetType="{x:Type TextBlock}">
    <!--<Setter Property="Width" Value="10"></Setter>
    <Setter Property="Height" Value="10"></Setter>-->
    <Setter Property="Background" Value="Black"></Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Trigger.EnterActions >
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="RotateTransform.Angle" To="-360" Duration="0:0:1" RepeatBehavior="Forever"/>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
        </Trigger>
    </Style.Triggers>
</Style>

2 个答案:

答案 0 :(得分:1)

能够使用xaml中堆叠面板的方向轻松旋转,但这不能立即访问角度。

<StackPanel Orientation="Horizontal">
    <Textbox ...../>
</StackPanel>

或者在你的风格中你可以添加一个setter属性。

<Setter Property="RenderTransform">
     <Setter.Value>
         <RotateTransform Angle="-90"></RotateTransform>
     </Setter.Value>
</Setter>

答案 1 :(得分:0)

如果您需要在RenderTransorm中使用TransformGroup,那么StoryboardTargetProperty将如下所示

RenderTransform.Children[0].Angle

如果你只留下RotateTransform,那么它将是

RenderTransform.Angle

在这两种情况下,如您所见,我们开始从 RenderTransform 搜索属性。