【问题标题】:Render a Java AWT canvas to fit screen渲染 Java AWT 画布以适应屏幕
【发布时间】:2015-11-10 11:23:54
【问题描述】:
我目前正在使用 Java 的 AWT 库制作游戏
游戏以 1080p 渲染,在 1080p 屏幕上运行良好,但超出 720p 显示器的边缘,并在 4k 显示器上留下大量空白空间。我想根据屏幕大小缩小或放大画布以适应屏幕。
(编辑)
如果您在使用 AWT 游戏库时遇到问题,我建议您改用 LWJGL/OpenGL,因为它是专门构建的,比 AWT 快得多,并且具有更高的功能。 OpenGL 的语法更复杂,但是,创建一个满足不太复杂需求的简单接口并不难。还应该注意的是,虽然安装起来可能很复杂,但 LWJGL 有很多后台工作,例如内置的游戏速度和屏幕缩放。阻力最小的路径并不总是最好的路径。
【问题讨论】:
标签:
java
canvas
resize
awt
aspect-ratio
【解决方案1】:
答案是,您可以使用 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