我有一个奇怪但很大的问题。我正在尝试让用户在画布上移动/旋转一些矩形。我的机制是基于操纵Canvas.Left / Canvas.Top属性进行移动,以及使用RenderTransform.Rotate进行旋转。我只需要对0/90/180/270角度进行旋转。
问题在于,放置在0度旋转上的坐标为0.0的矩形可以正常显示,但是0.0和90度旋转的相同矩形会在其他坐标处显示元素。据我所见,当旋转为0或180时,坐标始终正确,但是在90/270的情况下是错误的。设置的坐标与用户看到的差异与高度和宽度之间的差异有关。
有人遇到过这种问题吗?
谢谢, 丹尼尔
编辑:
当然,这里是一些XAML代码:
问题在于,放置在0度旋转上的坐标为0.0的矩形可以正常显示,但是0.0和90度旋转的相同矩形会在其他坐标处显示元素。据我所见,当旋转为0或180时,坐标始终正确,但是在90/270的情况下是错误的。设置的坐标与用户看到的差异与高度和宽度之间的差异有关。
有人遇到过这种问题吗?
谢谢, 丹尼尔
编辑:
当然,这里是一些XAML代码:
<Canvas Height="500" Width="500" Background="Green" <Rectangle Canvas.Left="0" Canvas.Top="0" Height="50" Width="100" RenderTransformOrigin="0.5,0.5" Fill="Red" <Rectangle.RenderTransform> <RotateTransform Angle="90" /> </Rectangle.RenderTransform> </Rectangle> <Rectangle Canvas.Left="0" Canvas.Top="0" Height="50" Width="100" RenderTransformOrigin="0.5,0.5" Fill="RoyalBlue" <Rectangle.RenderTransform> <RotateTransform Angle="0" /> </Rectangle.RenderTransform> </Rectangle> </Canvas> </Grid>
正如你所看到的,蓝色矩形似乎被正确地放置在(0,0),但红色矩形显示在不同的坐标上,即使它仍然返回0,0。
我发现公式如下:
displayPointX = Canvas.Left + height / 2 - width / 2
diaplayPointY = Canvas.Top + height / 2 - width / 2