小编use*_*363的帖子

WPF:旋转矩形并将其放在画布中

我有一个旋转矩形的问题,并以某种方式将其放在画布上.这是我试图实现的目标:

旋转矩形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);
Run Code Online (Sandbox Code Playgroud)

我认为要做到这一点的最好办法是计算偏移x,y和矩形定位Canvas.SetLeftCanvas.SetTop.但我在弄清楚如何进行数学运算时遇到了问题.(y计算似乎有效).

实际上我想在画布上随机放置几个矩形.旋转角度可以是-45度到45度之间的值,矩形尺寸也可以是随机值.但是矩形应该总是在画布中完全可见,所以我需要知道位置坐标边界的偏移.(矩形可以重叠.)

我希望你理解我的问题.如果你可以帮助我,那将是件好事.

wpf

17
推荐指数
1
解决办法
2万
查看次数

标签 统计

wpf ×1