使用鼠标拖动在WPF中绘制三角形

时间:2016-01-22 12:31:11

标签: c# wpf

我试图在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;

我把它添加到其他地方画布的孩子们身上。此代码允许我单击画布并拖动鼠标以调整矩形或椭圆的大小。

我希望用三角形做类似的事情。为了简单起见,我只希望用户能够点击屏幕并拖出等边三角形。我想要制作它,这样用户可以只点击三次来创建三角形,但由于项目的编码方式,这比听起来要困难一些。但是,如果没有任何方法来计算我尝试创建的三角形,我可以通过三次点击使其工作。

1 个答案:

答案 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)