【问题标题】:Changing the angle of a UIElement更改 UIElement 的角度
【发布时间】:2015-10-12 15:56:37
【问题描述】:

我有这个代码:

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

它设置了我的Image 元素的Angle。它可以工作,但是它并没有像我预期的那样移动。

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

【问题讨论】:

  • 所以你不能从结果中推导出来吗?它以Angle 顺时针旋转。 它没有像我预期的那样移动很多 -> 所以试着增加角度。
  • 首先,myImage.RenderTransform = transform; 行是多余的,因为您正在设置已经存在的变换的角度属性。默认情况下,旋转是围绕左上角。要改变这一点,您可以将元素的 RenderTransformOrigin 设置为相对坐标(例如(0.5, 0.5) 表示中心),或者将 RotateTransform 的 CenterXCenterY 属性设置为绝对坐标。

标签: wpf xaml win-universal-app rendertransform


【解决方案1】:

旋转角度为顺时针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>

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

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多