当鼠标移动时,我尝试旋转一个矩形。
我的代码:旋转一个矩形
private int i = 0;
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
RotateTransform rotation = new RotateTransform();
rotation.Angle = i;
rotation.CenterX = Canvas.GetLeft(rect) + rect.Width/2;
rotation.CenterY = Canvas.GetTop(rect) + rect.Height/2;
rect.LayoutTransform = rotation;
i++;
}
我想通过我的矩形的中心进行旋转,但它以另一种方式使得它。此行:
rotation.CenterX = Canvas.GetLeft(rect) + rect.Width/2;
rotation.CenterY = Canvas.GetTop(rect) + rect.Height/2;
不要改变任何东西。你知道为什么吗 ?
我发现在这个论坛另一篇文章的解决方案,所以我解决方案这就是:
double left = Canvas.GetLeft(rect);
double top = Canvas.GetTop(rect);
Canvas.SetLeft(rect, 0);
Canvas.SetTop(rect, 0);
RotateTransform rotation = new RotateTransform();
rotation.Angle = i;
rotation.CenterX = rect.Width/2;
rotation.CenterY = rect.Height/2;
rect.RenderTransform = rotation;
Canvas.SetLeft(rect, left);
Canvas.SetTop(rect, top);
i++;
好吧,在它的表面上我会说你没有设置角度('i'总是为'0'),并且你将中心值设置为矩形的中心。所以我并不感到惊讶没有发生任何事情。 (你实质上是应用了一个什么都不做的转换) – 2013-04-25 21:15:07
不,它确实旋转我的矩形,每当鼠标位置改变时,我都会增加它,所以它旋转我的矩形,但它像第一张图片一样旋转它:[image] (http://i.msdn.microsoft.com/dynimg/IC1813.gif),我想让它像第二张照片。 – Finchsize 2013-04-25 21:18:25
“Canvas.GetLeft(rect)”和“rect.Width”的值的调试器状态是什么? – 2013-04-25 21:21:30