找到2个DrawArc实例的结束坐标并绘制一条线以“关闭”它

时间:2019-04-09 07:03:30

标签: c# .net pdfsharp


因此,我不太精通C#/。Net / PDFSharp函数,而且似乎找不到任何合适的答案来解决我的问题。
基本上,我有一个简单的程序,该程序必须根据用户输入绘制对象的轮廓(可以弯曲等)。
我有一个半径和一个角度来画两条弧线。
在360度中,一个圆的半径比用户输入的厚度X值小,因此两个圆的“内部”与整个吃水深度相同。
最后,我需要程序做的是在弧线的两侧绘制两条线以“连接它们”以使其成为合适的轮廓,我可以很容易地管理起始线,因为它不是动态的。终点线取决于半径和角度。
如何正确地找到弧的“终点”坐标,以便无论用户输入的半径/厚度/角度如何,都能成功地在终点绘制终点线。
这是一些有关我如何绘制圆弧,起始线以及我尝试找到终止线的尝试的代码(最终将线绘制得离整个草稿太远了)。
输入是用户控制,用户可以在其中输入变量(需要多个但以一个结束,因此使用“用户控制+表单”窗口听起来很浪费)。
mmradius,厚度,mmangle都是用户输入,Innerradius是内圆半径。

var innerradius = Input.mmradius- Input.thickness;
gfx.DrawArc(pen, start_x, start_y, mmradius*2, mmradius*2, 0, mmangle);

gfx.DrawLine(pen, start_x + mmradius+ innerradius, start_y + mmradius,
 (start_x + mmradius) + mmradius, start_y + mmradius);

gfx.DrawArc(pen, (start_x + mmradius) - innerradius,
 (start_y + mmradius) - innerradius, innerradius*2, innerradius*2, 0, mmangle);

var CenterX = start_x + mmradius;
var CenterY = start_y + mmradius;
double degrees = mmangle * (Math.PI / 180);
var end_x = mmradius + CenterX * Math.Cos(degrees);
var end_y = mmradius + CenterY * Math.Sin(degrees);

gfx.DrawLine(pen, end_x, end_y, end_x - innerradius, end_y - 2);

希望这对我想要的东西是可以理解的,否则我会尽力澄清!

1 个答案:

答案 0 :(得分:0)

也许这样效果更好:

var end_x = CenterX + mmradius * Math.Cos(degrees);
var end_y = CenterY + mmradius * Math.Sin(degrees);

无法尝试运行它,因此可能需要更多更改。