更改 UIElement 的角度

KTO*_*TOV 4 wpf xaml rendertransform win-universal-app

我有这个代码:

RotateTransform transform = myImage.RenderTransform as RotateTransform;
transform.Angle = 25.0;
myImage.RenderTransform = transform;
Run Code Online (Sandbox Code Playgroud)

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

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

Jer*_*xon 5

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

在此输入图像描述

合理?看这个:

在此输入图像描述

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

<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>
Run Code Online (Sandbox Code Playgroud)

请务必注意这RenderTransformOrigin=".5,.5"一点。这对您来说非常重要,因为它决定了旋转轴的位置。值从 0 到 1。所以0,0基本上是上/左,1,1下/右。这让.5,.5中间变得很糟糕。

祝你好运!