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