java - 将 bufferedimage 移动 1 行或列

标签 java bufferedimage

好吧,如果有人问这个问题并得到答复,我们深表歉意。我正在尝试弄清楚这是否可能。我正在尝试使我的游戏的drawMap 方法更加高效。

它会执行一个循环,并以通常的方式将每个图 block 绘制到 bufferedImage 中。下面简化了代码以显示逻辑。

for (int x = 0; x < xTiles; x++){
    for (int y = 0; y < yTiles; y++){
        //10 x 10 map
        SpriteStore.get().getSprite("res/images/tiles/" + groundLayer[count] + ".png");
    }
}

每次玩家行走(北 || 东北 || 西北 || 东 || 南 || 东南 || 西南 || 西)时,我都会重新绘制完整 map 。

例如,在向北移动期间,是否可以将整个图像向下“移动”1 行(丢弃底行,10 列宽)并简单地刷新顶行?这是否可能无需遍历整个集合 - 这可能会达不到目的(避免迭代整个 map )?我不确定我是否只是精疲力尽还是什么,但我很难想出这个的逻辑。

非常感谢您阅读本文以及您的智慧!!

最佳答案

完善 MadProgrammer 的评论:

您可以使用Graphics.drawImage做你想做的事 - 将 (x,y) 设置为负数以向左/向上移动,或将 (x,y) 设置为正数以向右/向下移动。然后您只需绘制"new"区域即可。

而且,如果您还没有这样做,zebediah49 关于重新使用一对缓冲图像而不是每帧创建一个新图像的建议将是一个巨大的插入。

关于java - 将 bufferedimage 移动 1 行或列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982791/

相关文章:

java - ImageIO 和 URL

java - 使用BufferedImage的DataBuffer设置像素

java - 关于 BufferedImages 和图像的问题

java - 调整 JFrame 中 JEditorPane 的大小

java - 无法在屏幕旋转时保留菜单项

JAVA_HOME 和 PATH 已设置,但 java -version 仍显示旧版本

java - flutter - 错误 : Some runtime JAR files in the classpath have an incompatible version. 考虑将它们从类路径中删除

javascript - Jcrop 没有正确裁剪图像

Java BufferedImage 分别获得红色、绿色和蓝色

java - 为什么我的类不可序列化?