渲染 Java AWT canvas 以适合屏幕

Render a Java AWT canvas to fit screen

我目前正在使用 Java 的 AWT 库制作游戏 游戏以 1080p 渲染,在 1080p 屏幕上运行良好,但超出了 720p 显示器的边缘,并在 4k 显示器上留下很多空白 space。我想根据屏幕尺寸缩小或放大 canvas 以适合屏幕。

(编辑) 如果您在使用 AWT 游戏库时遇到问题,我建议您改用 LWJGL/OpenGL,因为它是专门构建的,比 AWT 快得多,并且具有更高的功能。 OpenGL 的语法更为复杂,但是,创建一个满足不太复杂需求的简单界面并不难。还应该注意的是,虽然安装起来可能很复杂,但 LWJGL 自带了很多后台工作,例如内置的游戏速度和屏幕缩放。阻力最小的路径并不总是最好的。

答案是,您可以使用 ToolKit.getScreenSize / getScreenResolution 使其全屏显示。然后,您要做的是添加在 1080p 屏幕上看起来不错的大小和分辨率的默认值,将 ComponentListener 添加到 (J)Frame 或其 ContentPane,并实施 componentResized。然后使用默认屏幕尺寸和默认分辨率的比例重新调整游戏中所有内容的大小。

Dimension DEFAULT_SIZE = ...;
int DEFAULT_RESOLUTION = ...;
Dimension actualScreenSize = Toolkit.getToolkit().getScreenSize();
int actualResolution = Toolkit.getToolkit().getScreenResolution();
AffineTransform at = AffineTransform.getScaleInstance(...,...);
//Apply scaling to your Components and Shapes