使用鼠标拖动在 WPF 中绘制三角形
本文关键字:绘制 三角形 WPF 鼠标 拖动 | 更新日期: 2023-09-27 18:31:23
我正在尝试在C#的WPF中创建一个非常简单的绘制项目。 除了画一个三角形,我几乎什么都可以工作。 我无法弄清楚创建三角形所需的数学。
我有这样的代码来绘制矩形和圆形:
case "Rectangle":
case "Ellipse":
var x = Math.Min(pos.X, mm.startPoint.X);
var y = Math.Min(pos.Y, mm.startPoint.Y);
var width = Math.Max(pos.X, mm.startPoint.X) - x;
var height = Math.Max(pos.Y, mm.startPoint.Y) - y;
mm.shapeObj.Width = width;
mm.shapeObj.Height = height;
Canvas.SetLeft(mm.shapeObj, x);
Canvas.SetTop(mm.shapeObj, y);
break;
我把它添加到其他地方的画布子项中。 此代码允许我单击画布并拖动鼠标以调整矩形或椭圆的大小。
我希望用三角形做类似的事情。 为了简单起见,我只希望用户能够单击屏幕并拖出等边三角形。 我想过这样做,以便用户可以单击三次来创建三角形,但由于项目的编码方式,这将比听起来要困难一些。 但是,如果没有任何方法可以计算我尝试创建的三角形,我可以通过单击三次使其工作。
如果你这样排序你的点:
int smX = startPoint.X < finalPoint.X ? startPoint.X : finalPoint.X;
int bgX = startPoint.X < finalPoint.X ? finalPoint.X : startPoint.X;
int smY = startPoint.Y < finalPoint.Y ? startPoint.Y : finalPoint.Y;
int bgY = startPoint.Y < finalPoint.Y ? finalPoint.Y : startPoint.Y;
您可以想象一个带有点的矩形:
(smX, smY)
(smX, bgY)
(bgX, smY)
(bgX, bgY)
因此,您可以使用矩形的中间来设置三角形点,而不是绘制带有点的三角形:
(smX, bgY)
(bgX, bgY)
(smX + ((bgX - smX) / 2), smY)