(Java) 图形更改分辨率?

(Java) Graphics change resolution?

我正在使用 GraphicsBufferStrategy 绘制到 Canvas,线条如

g.drawImage(bufferedImage, x, y, null);

我目前在 JFrame 中未修饰此 运行,根据我笔记本电脑的分辨率,分辨率为 1920x1080p。我很好奇是否有任何方法可以改变呈现的 Graphics 的分辨率,特别是降低分辨率以增加 efficiency/speed,或适应另一个不同尺寸的屏幕。有许多对象是用相机渲染的,游戏运行得相当好,但任何可用的分辨率更改都会在我的设置中作为可选选项有用。

我对此进行了研究,但没有找到好的答案。谢谢你的时间。

(打印等分辨率变化。)

最好使用具有较小图像并缩放宽度和高度的 drawImage。

现在,您甚至可以使用具有 BufferedImage.createGraphics 的 Graphics2D 在您自己的 BufferedImage 中渲染所有内容,然后进行缩放。不太适合文本或打印。

或使用 Graphics2D 缩放:

对于复杂的渲染:

g.scale(2.0, 2.0);
... // Draw smaller image
g.scale(0.5, 0.5);

如您所想,除了需要较小的图像外,这可能无助于内存消耗。在某一时刻,图像的所有像素都必须以设备颜色大小给出。 256 色 gif 或 10KB 的 jpg 都无济于事。

反之亦然,在内存紧张的情况下也支持高分辨率。有人可能会使用 平铺图像 ,请参阅 ImageIO

重要的是准备paintComponent/paint之外的图像。

如果您制作自己的 BufferedImage,您也可以选择设备兼容的位图,但这似乎是偶然的 (GraphicsEnvironment)。