【问题标题】:Replacing section of color in image with another image - Java用另一个图像替换图像中的颜色部分 - Java
【发布时间】:2023-03-26 18:40:02
【问题描述】:

我正在尝试用纯 Java 的 2D Java 创建武器渲染系统。但是,在将武器渲染到角色上时,我遇到了一个问题。我需要将武器渲染到角色图像上“绿屏”的位置。 Beta character image。该图像的浅绿色部分需要替换为this。角色图像的绿色部分不是静态的,武器也不总是这种形状。我见过的最接近的问题是: Change color in image - (Greenscreen in JAVA)。但是,问题没有得到解答。

我没有为此编写任何代码,但我正在考虑逐像素阵列并获取该部分,但对于大图像来说似乎效率不高。我最初计划在屏幕上获取玩家位置并偏移武器以渲染它需要的位置。问题是我真的不知道如何有效地做到这一点。

【问题讨论】:

  • 到目前为止,您尝试过任何代码吗?你在想什么?我们需要知道您的计划是什么以及到目前为止您已经尝试过什么。你到底遇到了什么问题?
  • 个人直觉是,不要。相反,定义要显示武器的区域并简单地覆盖到角色图像中
  • @Keara 我还没有为此编写任何代码,但我正在考虑逐个像素阵列并获取该部分,但它似乎效率不高。我最初计划在屏幕上获取玩家位置并偏移武器以渲染它需要的位置。问题是我真的不知道如何有效地做到这一点。
  • 太棒了!请更新您的问题并解释所有内容,以便每个人都可以轻松查看。

标签: java game-engine


【解决方案1】:

去掉绿色像素。那么:

  1. 如果您的角色是静态的,请执行以下操作: 您的示例武器图像与示例角色图像具有相同的大小。保持这种状态,每帧都在同一位置渲染角色和武器。

  2. 如果您有不同的角色需要武器在不同的位置,请将武器偏移存储在某个文件中,例如:

    "character1", "character1.png", 12, 14

    "character2", "character2.png", 10, 9

    或任何其他对您的情况有意义的东西。然后缩小武器图像的大小并在字符位置+文件中提供的偏移量处绘制它。

  3. 如果您有动画角色,其中武器位置发生变化,请为每一帧存储一个偏移量。

如果你真的想用另一个图像中的像素替换图像中的像素,并且使用纯 Java,而不是 GPU 加速,你必须通过一个简单的循环逐个像素地完成。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 2021-11-26
    • 1970-01-01
    • 2012-08-24
    • 2015-12-19
    • 2016-06-17
    • 2012-06-01
    • 2018-05-11
    • 2022-10-14
    相关资源
    最近更新 更多