本文介紹了畫一條連接兩個(gè)矩形的線的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在用Swing/AWT制作我自己的類圖應(yīng)用程序,但我在此功能上停了下來:
我想在已經(jīng)選擇的Class矩形和目標(biāo)Class矩形之間畫一條線,但是LINE有一個(gè)功能,那就是每當(dāng)我移動其中一個(gè)矩形時(shí),連接它們的線就會隨著移動的矩形直線彎曲,我希望下面的圖片演示我想要實(shí)現(xiàn)的目標(biāo):
非常感謝通用指南或示例代碼
推薦答案
我不懂JAVA,但您可以遵循以下步驟:
找到每行矩形的中間位置(應(yīng)該很簡單,只需平均x1+x2和y1+y2)
在上一步中獲得的點(diǎn)上使用畢達(dá)哥拉斯公式確定彼此最接近的邊。
從xa,ya(您在上面步驟中得到的第一個(gè)點(diǎn))開始繪制一條線,并將其繪制在遠(yuǎn)離矩形的方向。您應(yīng)該知道此方向,因?yàn)槟梢灾涝擖c(diǎn)所在的線段。
對xb,yb(第二個(gè)矩形上的點(diǎn))執(zhí)行相同的操作。如果線條方向相反,您應(yīng)該將它們繪制到xa-xb或ya-yb的中途(取決于您是水平還是垂直繪制)。如果它們是垂直的(這是正確的詞嗎?)你應(yīng)該把它們畫到交叉點(diǎn),所以你從xa,ya畫到xa,yb或xa,ya到xb,ya,這取決于你畫的是水平線還是垂直線。
應(yīng)該有一些額外的檢查,以查看矩形是否重疊。例如,您不應(yīng)該在同一方向上繪制線條。在無法確定如何繪制這些直線的情況下,您只需在這兩個(gè)點(diǎn)之間畫一條對角線就足夠了。
對于實(shí)現(xiàn),您可以構(gòu)建一個(gè)Line類,該類使用觀察器模式偵聽它跟隨的兩個(gè)矩形,這樣只要其中一個(gè)矩形移動或調(diào)整大小,它就可以自我更新。
這篇關(guān)于畫一條連接兩個(gè)矩形的線的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,