wpf - 更改 UIElement 的角度

标签 wpf xaml win-universal-app rendertransform

我有这个代码:

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

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

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

最佳答案

顺时针旋转角度为 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 位于中间。

祝你好运!

关于wpf - 更改 UIElement 的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085362/

相关文章:

c# - DataGrid WPF 中的 DataGridTemplateColumn 列跨度

c# - BindableBase 与 INotifyChanged

c# - 设置边框样式模板,但允许灵活使用值

xaml - Visual Studio 2017 XAML 验证中的 Xamarin 表单

c# - 如何在属性更改时触发 DataTemplateSelector?

wpf - 没有其他窗口打开时 System.Windows.Window.ShowDialog() 的意外行为。知道为什么吗?

c# - 在 WPF 中使 StackPanel 方向水平

javascript - 从 HTML5/JS 中的 UWP 应用访问数据库

c# - 如何访问Windows Phone 8.1 中的下载文件夹

visual-studio-2015 - 从 Windows 8.1 专业版升级到 Windows 10 后,我无法创建通用 10 项目