java图形 - 两种颜色的形状

时间:2009-07-24 14:32:47

标签: java graphics

(这是java)我有一个椭圆形,代表一个单位。我希望椭圆的颜色代表单位的健康状况。所以一个完美健康的单位将全部绿色。随着单位健康状况的减少,椭圆开始从底部开始充满红色。因此,在50%的健康状态下,椭圆形在下半部分为红色,上半部分为绿色,当单位死亡时为全红色。 我确信这里的解决方案必须明显而且微不足道,但我无法看到它。 非常感谢

3 个答案:

答案 0 :(得分:2)

您可以在背景中绘制一个红色椭圆,然后绘制一个椭圆形和一个矩形的绿色交点,矩形从椭圆形下方开始,然后进一步向上移动以显示更多下方的红色椭圆。

您可能希望了解如何使用基元here

构建复杂形状

答案 1 :(得分: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);
  }
}

可能希望通过一些双缓冲来增强它,但你得到了要点。

答案 2 :(得分: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);

}