Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 为什么Graphics2D drawImage要花费这么多时间?_Java_Graphics_Jframe - Fatal编程技术网

Java 为什么Graphics2D drawImage要花费这么多时间?

Java 为什么Graphics2D drawImage要花费这么多时间?,java,graphics,jframe,Java,Graphics,Jframe,我正在创建一个利用Java Graphics2D库的游戏。我的代码的简化版本中的以下调用大约需要20毫秒才能完成: off2.drawImage(tileImage, 0, 0, null); 其中,tileImage是大小为5040*2280的图像,off2通过以下代码声明: GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = env.getD

我正在创建一个利用Java Graphics2D库的游戏。我的代码的简化版本中的以下调用大约需要20毫秒才能完成:

off2.drawImage(tileImage, 0, 0, null);
其中,
tileImage
是大小为5040*2280的图像,
off2
通过以下代码声明:

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
GraphicsConfiguration config = device.getDefaultConfiguration();
offscreen = config.createCompatibleImage(SCREEN WIDTH, SCREEN HEIGHT, Transparency.TRANSLUCENT);
offg = offscreen.getGraphics();
off2 = (Graphics2D)offg;
我还使用
off2.scale
缩放图像

我在继承
JPanel
的类中有一个
paintComponent
方法,该类在屏幕外绘制

@Override
public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(offscreen, 0, 0, this);                 
}

我想知道一个电话是否需要这么长的时间。鉴于这是一款动作游戏,我更愿意使用尽可能快的方法来最大化平滑度。

您总是渲染整个图像吗?若然,原因为何?你应该渲染屏幕上的部分(更少的像素)。@JacobG。很好。谢谢我是个新手,所以你会如何只渲染图像的一部分呢?取决于。它是静态图像吗?如果是这样,我想您可以在第一次需要时完全渲染它一次,然后缓存它。5040*2280