所以,我不是很精通 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);希望它能理解我想要的東西,否則我會盡力澄清!
1 回答
蝴蝶刀刀
TA貢獻1801條經驗 獲得超8個贊
也許這樣效果更好:
var end_x = CenterX + mmradius * Math.Cos(degrees);
var end_y = CenterY + mmradius * Math.Sin(degrees);
無法嘗試運行它,因此可能需要進行更多更改。
- 1 回答
- 0 關注
- 112 瀏覽
添加回答
舉報
0/150
提交
取消
