如上图所示,以红线为中心轴画黑色矩形,已知红线的起点坐标、终点坐标和矩形的宽度,如何画矩形?
我在写System.Drawing.Graphics
的扩展方法来实现,直线的起点位置、终点位置、矩形的宽度作为参数传递给方法,但是接下来怎么写画矩形逻辑呢?
public static void DrawRectangleWithLine(this Graphics g, Pen pen, Vector3 startPointPosition, Vector3 endPointPosition, int width)
{
double length = Math.Pow(Math.Pow(startPointPosition.X - endPointPosition.X, 2) + Math.Pow(startPointPosition.Y - endPointPosition.Y, 2), 0.5);
double slope = (startPointPosition.Y - endPointPosition.Y) / (startPointPosition.X - endPointPosition.X);
double angle = Math.Atan(slope);
// draw the four sides of the rectangle
g.DrawLine()
g.DrawLine()
g.DrawLine()
g.DrawLine()
}
2条答案
按热度按时间uxh89sit1#
1.从起点位置和终点位置计算矩形的长度。
1.从起点位置和终点位置计算直线的斜率。
1.从斜率计算Angular 。
1.计算矩形的四个顶点的位置。
1.用直线连接矩形的四个顶点。
iyzzxitl2#
这里有一个替代方法,不需要计算旋转矩形的实际坐标。
相反,我们平移和旋转整个图形表面,并绘制一个大小正确的“正常”矩形:
在WinForms中使用它的示例:
Point
,而不是下面的Vector3
!代码:
输出: