2010-09-07 103 views
1

我正在用戶界面中繪製一個選項卡。我有我想要的輪廓。我如何填寫該區域?在兩個CubicCurve2D.Float s和一條線內填充一個區域

這是繪製標籤的邊框代碼:

val g2 = g.asInstanceOf[Graphics2D] 

g2.translate(x, y) 
val q = new CubicCurve2D.Float 
q.setCurve(0, h, 8, h, 6, 0, 16, 0) 
g2.setColor(Color.RED) 
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
        RenderingHints.VALUE_ANTIALIAS_ON) 
g2.draw(q) 
val end = w - 8 
g2.drawLine(17, 0, end, 0) 
q.setCurve(end, 0, end+10, 0, w, h, w + 8, h) 
g2.draw(q) 

,這是它吸引的線(紅色):image

我希望能夠填補在紅線內。

回答

3

我不知道Scala,但在Java 2D中,Graphics2D對象可以填充或繪製任何對象的輪廓。對於一些任意的形狀,你將與GeneralPath對象定義,如:

GeneralPath path = new GeneralPath(); 
path.lineTo(10, 10); 
path.lineTo(0, 10); 
path.lineTo(0, 0); 
graphics.setColor(Color.RED); 
graphics.fill(path); 

的GeneralPath對象,也有繪製貝塞爾曲線和四邊形,所以你會繪製的路徑,然後選擇填寫或畫出輪廓的方法的。

增加了新的鏈接GeneralPath

+0

感謝您指出我在正確的方向。我看着GeneralPath,它指向了Path2D.Float,我通過添加CubicCurve2D.Float來使用它。然後我可以按照建議繪製並填充Path2D.Float。 – Boomah 2010-09-07 16:27:18

相關問題