【问题标题】:Transparency through an image通过图像的透明度
【发布时间】:2015-02-10 07:31:48
【问题描述】:

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

这可能会让您更深入地了解我想要做什么:

这是我的影子课程:

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

【问题讨论】:

标签: java image transparency


【解决方案1】:

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

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

  1. 创建带有透明孔的背景图形。缩放整个图形,使孔的大小达到您想要的大小,然后将其绘制在您的场景上。背景图形必须足够大,即使在最小尺寸的孔处也能延伸到场景的边界。

  2. 与其使用图形图像进行遮光,不如简单地绘制一个包含孔的填充多边形。您可以使用GeneralPath 来定义一个复杂的多边形,或者(我的偏好)将您的黑色部分切成两半(比如水平)并分别绘制每一半。

【讨论】:

    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 2020-01-03
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多