在Java中填充除空格外的屏幕

时间:2014-08-06 22:35:06

标签: java graphics graphics2d

我正试图用Java中的Graphics2D对象渲染战争迷雾。目前,我正在这样渲染。

// Color the screen black
Color color = new Color(0, 0, 0, 200);
graphics.setColor(color);
graphics.fillRect(0, 0, entity.getWorld().getGame().getWidth(), entity.getWorld().getGame().getHeight());
// Make a rectangle around the Entity that is normal
color = new Color(0, 0, 0, 0);
graphics.setColor(color);
PositionComponent2D data = (PositionComponent2D) entity.getComponent("pos");
Vector2D pos = data.getAABB().getPosition();
graphics.fillRect((int) pos.getX() - 20, (int) pos.getY() - 20, 40, 40);

它提供了我正在寻找的效果,除了代码的第二部分不起作用。有什么方法可以在屏幕上的任何地方渲染,除了靠近玩家以产生战争迷雾效果?

1 个答案:

答案 0 :(得分:1)

您希望使用composite进行第二次抽奖...这样的事情(免责声明:我还没有尝试过运行此代码,但这应该是一个开始点):

// Color the screen black
Color color = new Color(0, 0, 0, 200);
graphics.setColor(color);
graphics.fillRect(0, 0, entity.getWorld().getGame().getWidth(), entity.getWorld().getGame().getHeight());
// Make a rectangle around the Entity that is normal
Composite oldComposite = graphics.getComposite();
graphics.setComposite(AlphaComposite.CLEAR);
PositionComponent2D data = (PositionComponent2D) entity.getComponent("pos");
Vector2D pos = data.getAABB().getPosition();
graphics.fillRect((int) pos.getX() - 20, (int) pos.getY() - 20, 40, 40);
graphics.setComposite(oldComposite);