C# 使用布局变换旋转画布

C# 使用布局变换旋转画布,c#,wpf,xaml,C#,Wpf,Xaml,我正试着旋转这个画布 <Canvas Canvas.Left="203" Canvas.Top="274" Name="canvas1" Height="0" Width="0" > <Rectangle.LayoutTransform> <RotateTransform Angle="-45"/> </Rectangle.La

我正试着旋转这个画布

            <Canvas Canvas.Left="203" Canvas.Top="274" Name="canvas1" Height="0" Width="0" >
                <Rectangle.LayoutTransform>
                    <RotateTransform Angle="-45"/>
                </Rectangle.LayoutTransform>

我想在相同的位置旋转画布。。检查此图像


左图我不想那样做。。我需要创建第二个。。但我总是需要设置X,Y值?或者还有其他方法吗?

在WPF中,有两个属性支持显示转换,
LayoutTransform
RenderTransform
。在执行布局时,将应用分配给LayoutTransform的任何转换。执行渲染时,在布局之后应用RenderTransform

您需要将转换更改为RenderTransform

       <Rectangle.RenderTransform>
            <RotateTransform Angle="-45"/>
        </Rectangle.RenderTransform>


你可以看出两者之间的区别,这并不能说明全部情况。为什么“渲染变换”(RenderTransform)(正确地)像在这里一样拾取对象的中心作为旋转中心?我想这可能取决于从哪里开始绘制操作。换句话说,RenderTransform如何“知道”中心在哪里?我怀疑答案是它没有。您可以使用
renderTransferMorigin
告诉转换引擎旋转中心相对于对象边界的位置。@汤姆:谢谢您提供的宝贵信息。即使您不知道元素的大小,我们也可以使用
renderTransferMorigin
定位元素的中心。