Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java绘制特定对象_Java_Swing_Optimization_Paint - Fatal编程技术网

Java绘制特定对象

Java绘制特定对象,java,swing,optimization,paint,Java,Swing,Optimization,Paint,我正在用Java编写一个基于网格自上而下视图的游戏。我不太熟悉JPanel paintComponent()和repaint()方法,并且在创建快速屏幕绘制函数时遇到困难。 每个瓷砖都是一个具有瓷砖的对象。绘制瓷砖(g,x,y)在g上的(x,y)处绘制瓷砖。我想找到一个很好的方法,只画特定的瓷砖,但我不知道如何做到这一点。 我有一个世界级的TileAt(x,y)来获取tile,但是我所做的每一次尝试都会导致口吃或抛出错误。 感谢您的帮助! -Renmusxd 编辑:我尝试的: 我还不太习惯Jav

我正在用Java编写一个基于网格自上而下视图的游戏。我不太熟悉JPanel paintComponent()和repaint()方法,并且在创建快速屏幕绘制函数时遇到困难。 每个瓷砖都是一个具有瓷砖的对象。绘制瓷砖(g,x,y)在g上的(x,y)处绘制瓷砖。我想找到一个很好的方法,只画特定的瓷砖,但我不知道如何做到这一点。 我有一个世界级的TileAt(x,y)来获取tile,但是我所做的每一次尝试都会导致口吃或抛出错误。 感谢您的帮助! -Renmusxd

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

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

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

  • 创建一个屏幕外的
    buffereImage
    ,其大小应与您的游戏显示区域相同(如果您想允许滚动,则稍大一点)
  • 将您的瓷砖绘制到此屏幕外图像中
  • 重新绘制视图时(即在
    paintComponent
    方法中),只需一次性将整个BuffereImage绘制到屏幕上即可

瓷砖对象是否唯一?也就是说,每个图块都会出现在一个位置吗?“但是我所做的每一次尝试”(我指的是“在代码中”而不是“在文字中”),你真的应该展示你迄今为止所做的尝试,顺便说一句,Swing还是AWT?为了更快地获得更好的帮助,请发布您最成功的尝试。您可以使用双缓冲技术,将渲染更新为屏幕外图像,并在需要时通过components
paintComponent
方法绘制图像。您可能需要查看该方法,该方法允许您指定要重新绘制的区域。你可能会发现通读一下非常有用,谢谢!我会调查的。