(Java) 图形更改分辨率?
(Java) Graphics change resolution?
我正在使用 Graphics
到 BufferStrategy
绘制到 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)。
我正在使用 Graphics
到 BufferStrategy
绘制到 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)。