透过图像的透明度

时间:2015-02-10 07:31:48

标签: java image transparency

我目前正在制作2D游戏,而我正在制作阴影。我有一个缓冲的图像背景,它只是一个放在屏幕上的黑色矩形,还有一个透明的三角形缓冲图像,用于观看距离的玩家。我想要做的是,在我的游戏中绘制黑色背景缓冲图像,然后在玩家所在的位置绘制透明三角形,并且黑色背景不会显示在此透明三角形内。

这可能会让您更深入地了解我想要做的事情: Image of what I want

这是我的影子课:

private BufferedImage diamond;
private BufferedImage background;

public Shaders(World world) {
    try {
        diamond = ImageIO.read(getClass().getResourceAsStream("/GUI/DIAMOND.png"));
        background = ImageIO.read(getClass().getResourceAsStream("/GUI/BACKGROUND.png"));
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    this.world = world;
}

public void draw(Graphics g2) {
}

1 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题,你试图创造的视觉效果是用黑色覆盖你的游戏场景,除了一个“三角形”(实际上是一个旋转的方块),你的游戏场景的一部分是可见。

我有几个建议(其中第二个是我的建议):

  1. 使用透明孔创建背景图形。缩放整个图形,使孔尺寸符合您的要求,然后在场景上绘制。背景图形必须足够大,即使在最小尺寸的孔中也能延伸到场景的边界。

  2. 不是使用图形图像进行遮光,只需绘制包含孔的填充多边形。您可以使用GeneralPath来定义一个复杂的多边形或(我的偏好)将你的黑色切成两半(比方说,水平)并分别绘制每一半。