假设我有一个要在视觉设计器中旋转和缩放的元素:用户应该能够拖动边缘并且图形应该适当地缩放。
旋转以度数输入。
以下事实是旋转元素的一个问题:
当左上角被拖动时,不仅宽度和高度会改变,而且左上角的位置也会改变。当右上方的点被拖动时,大小和 Y 位置也会发生变化
但是如果元素旋转(WPF RenderTransform,围绕它的中心旋转),那么行为必须相应地改变,我不知道如何。假设元素旋转了 90°,那么之前在左上角的点就是右上角。
这意味着我必须改变一些东西,但我完全被难住了,恐怕
我正在寻找一种在任何图形程序中实现的行为。
用户基本上拖动边界框的点,图形应投影在框内。
这个问题如何在 WPF 中解决?
绘制的元素派生自 UIElement,因此我可以访问所需的所有转换属性。该解决方案应该适用于输入的任何旋转。
如果您能帮助我,或者指出我正确的方向,我将不胜感激。
编辑:
我知道如何缩放和旋转元素。期望的结果是元素完全适合用户拖动的框。所以这个问题比 WPF 更与数学相关。
编辑:
感谢您在没有提供我可以改进的建议的情况下投票。
为了理解问题,请尝试以下操作:
创建一个新的 WPF 项目,添加任何 UIElement 并将其旋转,例如 90°。
现在在拖动之前记住边距,然后将右下角拖动到某处。如您所见,边距(= 位置)也发生了变化。我的问题是如何计算此补偿以在拖动时为用户提供所需的结果。因为如果我不改变位置来补偿比例,结果就会很奇怪并且不会像预期的那样表现。
补偿取决于元素的比例。明显地。
请参考下图:
您在这里看到的是在我拖动右下点之前的 Canvas.Top 和 Canvas.Left 属性,以及在我拖动右下点之后的下方。
http://imageshack.us/photo/my-images/268/beforeaftert.png/?sa=0