2016-10-01 24 views
-1

我試圖用Graphics.drawPolygon()方法如何繪製與Java的圖形邊框

三角形是正確繪製來繪製邊框的三角形的三角形,但我怎麼能計算出邊界的3個點?

我已經有一個圓圈做了,但我似乎無法找到三角形的解決方案。

教師因爲它不能使用Graphics2D的要求。

我的代碼:

if (xPoints != null && yPoints != null) { 
    int[] nXPoints = new int[] { xPoints[0] - borderThickness, xPoints[1] - borderThickness, 
      xPoints[2] - borderThickness }; 
    int[] nYPoints = new int[] { yPoints[0] - borderThickness, yPoints[1] - borderThickness, 
      yPoints[2] - borderThickness }; 

    g.setColor(borderColor); 
    g.fillPolygon(nXPoints, nYPoints, 3); 

    g.setColor(fillColor); 
    g.fillPolygon(xPoints, yPoints, 3); 
} 

編輯: 預期結果

Expected result

+0

我很困惑。如果沒有這些要點,你怎麼可能畫出三角形呢? –

+0

'我如何計算邊界的3點?' - 。繪圖/填充方法適用於相同的一組點。 – camickr

+0

@JoeC ..我知道不可能沒有要點就畫出來。我正在尋找一種計算邊界點的方法。 –

回答

1

使用Graphics方法drawPolygon()呈現輪廓和fillPolygon(),以填補其內部;兩者都有所需的簽名,如here所示。

image1

因爲「該繪製的圖形的輪廓的操作通過遍歷像素之間的無限薄的路徑與像素大小的筆操作,」鑄造圖形上下文Graphics2D,這樣就可以使用draw()fill()在相應的Shape。這將允許您使用setStroke()指定輪廓,圖示here

image2 http://i52.tinypic.com/ndo51u.png

我需要它有一個自定義的厚度......我也不想用Graphics2D

定製厚度Graphics API中的支持。至於建議here,通過paintComponent()收到的實際圖形上下文是Graphics2D一個實例,其中確實支持自定義行程的幾何形狀。

事情是老師沒教我Graphics2D,所以我不應該使用它。

然後簡單油漆較大三角形,然後越小。如果這不起作用,那麼在計算較大的三角形時出現錯誤,您應該編輯您的問題以包含complete example

+0

感謝您的幫助,但我可以使用相同的邊界點,因爲我需要它有一個自定義的厚度 –

+0

我也不想使用Graphics2D ...謝謝 –

+0

這兩個需求衝突;我已經詳細闡述過了。 – trashgod