Java绘制特定对象

时间:2012-11-01 04:22:04

标签: java swing optimization paint

我正在用Java编写一个基于网格自上而下视图的游戏。我不太熟悉JPanel paintComponent()和repaint()方法,我在创建快速屏幕绘制功能时遇到了问题。 每个图块都是一个具有Tile.paintTile(g,x,y)的对象,用于在g上的(x,y)处绘制图块。我想找到一种很好的方法来仅绘制特定的瓷砖,但是我无法找到如何做到这一点。 我有一个带有TileAt(x,y)的World类来获取tile,但是我所做的每一次尝试都会导致口吃或抛出错误。 任何帮助表示赞赏! -Renmusxd

编辑:我尝试过的: 我还不习惯Java图形,我尝试覆盖paintComponent并添加paintComponent(g,x,y),但它不喜欢我不调用repaint。我不再拥有代码,因为我用paintAll版本替换它。遗憾。

1 个答案:

答案 0 :(得分:1)

通常每次重绘整个屏幕都比较容易 - 在大多数现代机器上使用Swing应该足够快。

如果您真的想要进行部分更新,那么最好的方法可能是:

  • 创建一个屏幕外BufferedImage,其尺寸应与游戏显示区域相同(如果您想允许滚​​动,则略大一些)
  • 将您的图块绘制到此屏幕外图像中。
  • 当您重新绘制视图时(即在paintComponent方法中),然后只需将整个缓冲图像一次性绘制到屏幕上。