2009-07-24 10 views
0

(これはjavaです)私はユニットを表す楕円形をしています。私は、楕円の色がユニットの健康状態を表すことを望みます。完全に健康なユニットはすべて緑色になります。ユニットの体力が低下すると、楕円形が赤く塗りつぶされます。 50%の健康状態では、下半分は赤、上半分は緑色、死んだときは完全に赤色になります。 ここの解決策は明白で些細なものでなければならないと確信していますが、私はそれを見ることができません。 ありがとうたくさんJavaグラフィックス - 2色の図形

答えて

2

赤い楕円を背景に描いてから楕円形と長方形の緑色の交差点を描画し、楕円形の下から四角形を描き、さらに上に移動してさらに赤色を表示することができます下の楕円形。

あなたが緑を描画するときに、グラフィックの上にクリップを設定することができますどのようなプリミティブhere

+0

素晴らしい!ちょうど私のようなnoobが必要な:) :)ありがとう – user143602

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

オーバーライドこのような塗装方法何か:

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); 
    } 
} 

がいくつかダブルバッファリングでそれを強化することがありますが、あなたはその要旨を取得します。

関連する問題