2009-07-24 85 views
0

(這是java)我有一個橢圓形,代表一個單位。我想要橢圓形的顏色代表單位的健康。所以一個完美健康的單位將全部是綠色的。隨着裝置的健康度下降,橢圓形開始從底部填充紅色。所以,在50%的健康狀況下,橢圓形的下半部分會變成紅色,上半部分變成綠色,當單位死亡時變成全紅。 我確信這裏的解決方案必須是明顯的和微不足道的,但我不能看到它。 非常感謝java圖形 - 兩種顏色的形狀

回答

2

您可以在背景中繪製一個紅色的橢圓形,然後繪製一個橢圓形和矩形的綠色交叉點,其中矩形在橢圓形下開始,然後進一步移動到頂部以顯示更多的紅色橢圓形。

你可能想在讀了如何構建複雜形狀出來元here

+0

太棒了!只是像我這樣的新手需要:)非常感謝 – user143602 2009-07-24 15:34:00

0

您可以設置圖形剪輯當你畫綠色的。只有剪輯中的內容纔會被繪製。

public void paint(Graphics g) { 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D)g.create(); 

    g2d.setColor(Color.RED); 
    g2d.fillOval(10, 10, 200, 100); 

    g2d.setColor(Color.GREEN); 
    g2d.setClip(10, 10, 200, 50); 
    g2d.fillOval(10, 10, 200, 100); 

} 
1

覆蓋paint方法是這樣的:

public void paint(Graphics graphics) 
{  
    super.paint(graphics); 

    Rectangle originalClipBounds = graphics.getClipBounds(); 

    try 
    { 
    graphics.clipRect(100, 100, 100, 25); 
    graphics.setColor(Color.RED); 
    graphics.fillOval(100, 100, 100, 100); 
    } 
    finally 
    { 
    graphics.setClip(originalClipBounds); 
    } 

    try 
    { 
    graphics.clipRect(100, 125, 100, 75); 
    graphics.setColor(Color.BLUE); 
    graphics.fillOval(100, 100, 100, 100); 
    } 
    finally 
    { 
    graphics.setClip(originalClipBounds); 
    } 
} 

可能要使用一些雙緩衝來增強它,但你得到的要點。