所以,我不是很精通 C#/.Net/PDFSharp 函数,我似乎找不到任何合适的答案来解决我的问题。
基本上,我有一个简单的程序,它必须根据用户输入绘制对象的轮廓(它可以是弯曲的等)。
我有一个角度的半径和度数来绘制 2 条弧线。
在 360 度中,一个圆的半径比用户输入的 X 厚度小,因此两个圆的“内部”与整个草图的厚度相同。
最后,我需要程序做的是在弧线的两侧画两条线以“连接它们”以使其成为合适的轮廓,我可以很容易地管理起始线,因为它不是动态的但是终点线取决于半径和角度。
如何正确找到我认为的圆弧的结束坐标,以便无论用户输入的半径/厚度/角度如何,它都能在最后成功绘制结束线。
这是一些代码,用于说明我如何绘制弧线、起始线以及我尝试找到结束线的失败尝试(它只是将线绘制得离整个草图太远)。
输入是用户控件,用户可以在其中输入变量(需要多个但最终只有一个,所以使用用户控件+表单窗口听起来很浪费)。
mmradius、thickness、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);
希望它能理解我想要的东西,否则我会尽力澄清!
蝴蝶刀刀
相关分类