c#画平行线和垂线的代码

    xiaoxiao2021-03-26  28

    参考如下绘制平行线的代码 private Point downPoint = Point.Empty; // 鼠标按下的坐标 private Point movePoint = Point.Empty; // 鼠标移动的坐标 private double lineSpace = 12.0f; // 线条之间的距离 private Point offsetPointA = Point.Empty; // 偏移坐标A private Point offsetPointB = Point.Empty; // 偏移坐标B private double PointToAngle(Point AOrigin, Point APoint) { if (APoint.X == AOrigin.X) if (APoint.Y > AOrigin.Y) return Math.PI * 0.5f; else return Math.PI * 1.5f; else if (APoint.Y == AOrigin.Y) if (APoint.X > AOrigin.X) return 0; else return Math.PI; else { double Result = Math.Atan((double)(AOrigin.Y - APoint.Y) / (AOrigin.X - APoint.X)); if ((APoint.X < AOrigin.X) && (APoint.Y > AOrigin.Y)) return Result + Math.PI; else if ((APoint.X < AOrigin.X) && (APoint.Y < AOrigin.Y)) return Result + Math.PI; else if ((APoint.X > AOrigin.X) && (APoint.Y < AOrigin.Y)) return Result + 2 * Math.PI; else return Result; } } /* PointToAngle */ private void Form1_MouseDown(object sender, MouseEventArgs e) { downPoint = e.Location; } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (downPoint != Point.Empty) { Graphics vGraphics = CreateGraphics(); if (movePoint != Point.Empty) { vGraphics.DrawLine(new Pen(BackColor), offsetPointA, new Point(movePoint.X + offsetPointA.X - downPoint.X, movePoint.Y + offsetPointA.Y - downPoint.Y)); vGraphics.DrawLine(new Pen(BackColor), offsetPointB, new Point(movePoint.X + offsetPointB.X - downPoint.X, movePoint.Y + offsetPointB.Y - downPoint.Y)); vGraphics.DrawLine(new Pen(BackColor), downPoint, movePoint); } movePoint = e.Location; double angle = PointToAngle(downPoint, movePoint); offsetPointA.X = (int)(Math.Cos(angle + 0.5f * Math.PI) * lineSpace + downPoint.X); offsetPointA.Y = (int)(Math.Sin(angle + 0.5f * Math.PI) * lineSpace + downPoint.Y); offsetPointB.X = (int)(Math.Cos(angle - 0.5f * Math.PI) * lineSpace + downPoint.X); offsetPointB.Y = (int)(Math.Sin(angle - 0.5f * Math.PI) * lineSpace + downPoint.Y); vGraphics.DrawLine(Pens.Red, offsetPointA, new Point(movePoint.X + offsetPointA.X - downPoint.X, movePoint.Y + offsetPointA.Y - downPoint.Y)); vGraphics.DrawLine(Pens.Red, offsetPointB, new Point(movePoint.X + offsetPointB.X - downPoint.X, movePoint.Y + offsetPointB.Y - downPoint.Y)); vGraphics.DrawLine(Pens.Blue, downPoint, movePoint); vGraphics.Dispose(); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { downPoint = Point.Empty; } 垂线的代码只要参照如上代码将角度旋转90度即可
    转载请注明原文地址: https://ju.6miu.com/read-660939.html

    最新回复(0)