當鼠標移動時,我嘗試旋轉一個矩形。
我的代碼:旋轉一個矩形
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