亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查找 2 個 DrawArc 實例的結束坐標并繪制一條線以“關閉”它

查找 2 個 DrawArc 實例的結束坐標并繪制一條線以“關閉”它

C#
慕姐8265434 2022-12-04 11:08:31
所以,我不是很精通 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);

無法嘗試運行它,因此可能需要進行更多更改。


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號