我试图在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;
我把它添加到其他地方画布的孩子们身上。此代码允许我单击画布并拖动鼠标以调整矩形或椭圆的大小。
我希望用三角形做类似的事情。为了简单起见,我只希望用户能够点击屏幕并拖出等边三角形。我想要制作它,这样用户可以只点击三次来创建三角形,但由于项目的编码方式,这比听起来要困难一些。但是,如果没有任何方法来计算我尝试创建的三角形,我可以通过三次点击使其工作。
答案 0 :(得分:2)
如果您点这样的积分:
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)