我在旋轉矩形時遇到了問題,並以某種方式將其放在畫布上。以下是我儘量做到:WPF:旋轉矩形並將其放置在畫布中
Rotated Rectangles http://www.freeimagehosting.net/uploads/79844652d2.jpg
圖中的大矩形是我的畫布。較小的矩形是我想要旋轉的矩形。當我旋轉矩形(虛線矩形),當然它會被剪切。爲了避免這種情況,我想重新定位右側圖片中的矩形。
這是我試過到目前爲止:
Rectangle rect = new Rectangle();
rect.Width = 100;
rect.Height = 50;
int angle = 30;
rect.RenderTransform = new RotateTransform(angle, rect.Width/2, rect.Height/2);
canvas.Children.Add(rect);
double x = Math.Cos(30) * (rect.Width/2) + Math.Sin(30) * (rect.Height/2) - rect.Width/2;
double y = Math.Sin(30) * (-rect.Width/2) + Math.Cos(30) * (rect.Height/2) - rect.Height/2;
Canvas.SetLeft(rect, x);
Canvas.SetTop(rect, y);
我認爲要做到這一點的最好辦法是計算偏移x,y和Canvas.SetLeft
和Canvas.SetTop
矩形的位置。但我有問題想出如何做數學。 (y計算似乎工作)。
其實我想在畫布的隨機位置放置幾個矩形。旋轉角度可以是-45到45度之間的值,並且矩形尺寸也可以是隨機值。但矩形應該始終在畫布中完全可見,所以我需要知道位置座標邊界的偏移量。 (矩形可能會重疊。)
我希望你能理解我的問題。如果你能幫助我,那會很好。
您的線條'rect.Width/2,rect.Height/2);'解決了我的問題。正如intellisense中提到的那樣,我正在傳遞直腸中心的座標。奇怪的是,智能感知導致混淆和疑問的答案。 :-) – 2015-10-20 06:02:41