BUAA-Soft-2023-Summer / Soft-Summer-2023

北航软件学院 2023 夏《程序设计实践》 小学期仓库
18 stars 0 forks source link

Java JFrame 贴图与窗口适配问题 #5

Closed yranium2023 closed 1 year ago

yranium2023 commented 1 year ago

问题

在创建窗口时,我选择的窗口大小与游戏的背景图片大小一致,但是背景图片最下面一截无法显示,需要增大窗口大小才能显示完全。请问这是什么原因导致的?需要增大的窗口大小是否为固定值,在不同的系统下显示效果会一致吗?

环境

Abyss7893 commented 1 year ago

选择的图片本身是有一个尺寸的,你可以在图片的属性中看到,游戏的窗口大小也会有一个固定的尺寸(你自己设置)。在将图片放在窗口中时,图片本身并不会产生缩放效果,因此当本身的图片大小大于窗口的大小时会产生图片展示不完全的效果。想解决的话可以对图片本身进行编辑,使用任意一款图片编辑软件,将其缩放成和你设置的窗口大小一致即可。你指定了窗口大小之后在不同系统下的显示就会固定,都是那个大小。

yranium2023 commented 1 year ago

选择的图片本身是有一个尺寸的,你可以在图片的属性中看到,游戏的窗口大小也会有一个固定的尺寸(你自己设置)。在将图片放在窗口中时,图片本身并不会产生缩放效果,因此当本身的图片大小大于窗口的大小时会产生图片展示不完全的效果。想解决的话可以对图片本身进行编辑,使用任意一款图片编辑软件,将其缩放成和你设置的窗口大小一致即可。你指定了窗口大小之后在不同系统下的显示就会固定,都是那个大小。

我的意思是我所设置的窗口大小和图片的分辨率是一致的,但是还是会有显示不全的问题,这个是因为窗口本身就占了一部分像素吗

Abyss7893 commented 1 year ago

如果分辨率也是一样的话那就有可能是下面这几个地方出了问题:

  1. JFrame 的实际大小可能包括窗口的边框和标题栏。这些部分可能占据窗口的一部分空间,影响可用于显示图片的空间。默认情况下,JFrame 使用 BorderLayout 布局管理器。如果在窗口中添加了其他组件,并且布局管理器导致图片组件被压缩或覆盖,就会导致显示不全的问题。
  2. 也有可能是图像绘制问题。如果通过 paint 绘制的话需要确保绘制区域的大小与窗口大小一致,否则图像可能会被截断。
gitDebuger commented 1 year ago

如果不会配置布局管理器,可以用setLayout(null);将布局管理器设置为空,手动用坐标调整图片尺寸