Java 为什么Graphics2D drawImage要花费这么多时间?
我正在创建一个利用Java Graphics2D库的游戏。我的代码的简化版本中的以下调用大约需要20毫秒才能完成: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
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