C# 如何用坐标画箭头?

C# 如何用坐标画箭头?,c#,math,geometry,itext,coordinates,C#,Math,Geometry,Itext,Coordinates,当您只有直线的源点和终点的坐标时,是否有一种绘制箭头的好方法 所以我用的是ITextSharp,用c#编程。 我知道如何轻松地计算坡度和其他东西,但有没有一种方法可以计算“箭头”三角形(图中标记为红色)的边坐标 提前感谢如果我们分别为直线的端点和箭头一侧的端点定义两个(二维)向量p2和p3,您将通过计算得到p3 p3=p2+A(α)s s是一个向量(l,0),其中l是箭头一侧的长度 alpha是这条线相对于x轴的角度,即给定线的角度和这条线与箭头线之间的正或负角度之和 矩阵的组成部分包括: a

当您只有直线的源点和终点的坐标时,是否有一种绘制箭头的好方法

所以我用的是ITextSharp,用c#编程。 我知道如何轻松地计算坡度和其他东西,但有没有一种方法可以计算“箭头”三角形(图中标记为红色)的边坐标

提前感谢

如果我们分别为直线的端点和箭头一侧的端点定义两个(二维)向量p2和p3,您将通过计算得到p3

p3=p2+A(α)s

s是一个向量(l,0),其中l是箭头一侧的长度

alpha是这条线相对于x轴的角度,即给定线的角度和这条线与箭头线之间的正或负角度之和

矩阵的组成部分包括:

a11=a22=cos(α)

a12=-sin(α)

a21=sin(α)


编辑:因为s的y分量为零,所以不需要a12和a22。

您的中心线是从
(x1,y1)
(x2,y2)

反向矢量
D=(dx,dy)=(x1-x2,y1-y2)

长度:
Norm=Sqrt(dx*dx+dy*dy)

规范化它:
uD=(udx,udy)=(dx/Norm,dy/Norm)

要形成箭头的“翅膀”,请按所需角度旋转
uD
。例如,我使用角度
Pi/6
Cos(Pi/6)=Sqrt(3)/2
Sin(Pi/6)=1/2

ax = udx * Sqrt(3)/2 - udy * 1/2
ay = udx * 1/2 + udy * Sqrt(3)/2
bx = udx * Sqrt(3)/2 + udy * 1/2
by =  - udx * 1/2 + udy * Sqrt(3)/2
翼长为L=20的头部点

 (x1 + 20 * ax, y1 + 20 * ay) 
and
 (x1 + 20 * bx, y1 + 20 * by)

模糊的想法:走到终点,得到+45度的坡度,沿着这个方向走一段特定的距离。这需要一点数学知识,但是在你尝试写之前,确保你在纸上写下了你正在做的事情(为了省去你自己的头疼),也许试试@LarsTech这确实是最简单的方法,但是要注意,这个例子添加了一个注释。我们无法从图像中判断箭头是否应该是内容流的一部分(在这种情况下,您确实需要创建PDF语法并计算坐标),或者它是否可以是注释,在这种情况下,您只需将线条的一端定义为箭头。它必须是使用MoveTo和LineTo构建的pdfContentByte,因此Bruno是正确的,我不能用annotation@Senderek那么,这只是使用高中数学的问题。