改变UIElement的角度

时间:2015-10-12 15:56:38

标签: wpf xaml win-universal-app rendertransform

我有这段代码:

RotateTransform transform = myImage.RenderTransform as RotateTransform;
transform.Angle = 25.0;
myImage.RenderTransform = transform;

设置我Angle元素的Image ..它有效,但它并没有像我预期的那样移动。

我只是想知道Angle是否是根据图像的右上角设置的?那么,它是否会将图像从图像的右侧旋转25度?

1 个答案:

答案 0 :(得分:3)

旋转角度顺时针为360度。这意味着25度实际上将它移动到大约1点钟。如果你想指向右边,它将是90度。直下将是180度。

enter image description here

有意义吗?看看这个:

enter image description here

这里有一些代码可以帮助您测试:

<StackPanel Width="200" Margin="0,50">
    <Grid Width="100" Height="100" Background="SteelBlue" RenderTransformOrigin=".5,.5">
        <UIElement.RenderTransform>
            <RotateTransform Angle="{Binding Value, ElementName=MySlider}" />
        </UIElement.RenderTransform>
        <Line HorizontalAlignment="Center" VerticalAlignment="Top"
                Stroke="Goldenrod" StrokeThickness="4"
                X1="2" X2="2"
                Y1="0" Y2="40" />
        <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White">
            <Run Text="{Binding Value, ElementName=MySlider}" />
            <Run Text="degrees" />
        </TextBlock>
    </Grid>
    <Slider x:Name="MySlider" Maximum="360" Minimum="0" Value="25" />
</StackPanel>

请务必注意RenderTransformOrigin=".5,.5"位。这对你来说非常重要,因为它决定了旋转轴的位置。值为0到1.因此0,0基本上是顶部/左侧,1,1是底部/右侧。这使得.5,.5位于中间位置。

祝你好运!