所以,我不是很精通 C#/.Net/PDFSharp 函數(shù),我似乎找不到任何合適的答案來(lái)解決我的問(wèn)題?;旧?,我有一個(gè)簡(jiǎn)單的程序,它必須根據(jù)用戶輸入繪制對(duì)象的輪廓(它可以是彎曲的等)。我有一個(gè)角度的半徑和度數(shù)來(lái)繪制 2 條弧線。在 360 度中,一個(gè)圓的半徑比用戶輸入的 X 厚度小,因此兩個(gè)圓的“內(nèi)部”與整個(gè)草圖的厚度相同。最后,我需要程序做的是在弧線的兩側(cè)畫兩條線以“連接它們”以使其成為合適的輪廓,我可以很容易地管理起始線,因?yàn)樗皇莿?dòng)態(tài)的但是終點(diǎn)線取決于半徑和角度。如何正確找到我認(rèn)為的圓弧的結(jié)束坐標(biāo),以便無(wú)論用戶輸入的半徑/厚度/角度如何,它都能在最后成功繪制結(jié)束線。這是一些代碼,用于說(shuō)明我如何繪制弧線、起始線以及我嘗試找到結(jié)束線的失敗嘗試(它只是將線繪制得離整個(gè)草圖太遠(yuǎn))。輸入是用戶控件,用戶可以在其中輸入變量(需要多個(gè)但最終只有一個(gè),所以使用用戶控件+表單窗口聽起來(lái)很浪費(fèi))。mmradius、thickness、mmangle 都是用戶輸入,Innerradius 是內(nèi)圓半徑。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);希望它能理解我想要的東西,否則我會(huì)盡力澄清!
1 回答

蝴蝶刀刀
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
也許這樣效果更好:
var end_x = CenterX + mmradius * Math.Cos(degrees);
var end_y = CenterY + mmradius * Math.Sin(degrees);
無(wú)法嘗試運(yùn)行它,因此可能需要進(jìn)行更多更改。
- 1 回答
- 0 關(guān)注
- 101 瀏覽
添加回答
舉報(bào)
0/150
提交
取消