Pygame 游戏如何在不拉伸图像的情况下处理窗口大小/不同分辨率?

Pygame 游戏如何在不拉伸图像的情况下处理窗口大小/不同分辨率?,pygame,resolution,scaling,window-resize,Pygame,Resolution,Scaling,Window Resize,我目前正在Pygame中开发一些较小的程序,当时机成熟,我有了一个想法,这将使我能够编写一个可以处理不同分辨率的游戏。我的问题是:软件开发人员如何处理不同的分辨率,但仍然为用户提供非常相似的界面,而不完全重新设计他们的艺术。将我的问题形象化的一个好例子是YouTube。他们如何处理不同的屏幕分辨率而不切断不同显示器的部分视频 我曾尝试通过拉伸内容来调整窗口大小,但最终并没有达到我想要的效果 假设我有一个900x700的窗口大小,然后我将其放大到1000x800,我希望按钮在屏幕上的位置完全相同,

我目前正在Pygame中开发一些较小的程序,当时机成熟,我有了一个想法,这将使我能够编写一个可以处理不同分辨率的游戏。我的问题是:软件开发人员如何处理不同的分辨率,但仍然为用户提供非常相似的界面,而不完全重新设计他们的艺术。将我的问题形象化的一个好例子是YouTube。他们如何处理不同的屏幕分辨率而不切断不同显示器的部分视频

我曾尝试通过拉伸内容来调整窗口大小,但最终并没有达到我想要的效果


假设我有一个900x700的窗口大小,然后我将其放大到1000x800,我希望按钮在屏幕上的位置完全相同,除了放大以匹配新的分辨率外,如何在不拉伸的情况下实现这一点?

对于不同的窗口大小,您可以将位置保留在列表中(甚至文件中)并在调整窗口大小时使用这些值。或者您可以将位置描述为窗口大小的百分比-即中间始终为
宽度*0.5
-或其他元素的百分比-即按钮上文本的中心为
按钮宽度*0.5
。在调整窗口大小时,必须重新计算所有元素的位置。在像Tkinter、PyQt、wxPython这样的GUI中,有一些布局管理器,它们根据其他元素的位置计算位置,而不使用像素(x、y)位置。您也可以将图形保留为SVG图像,然后动态缩放它们,以便在分辨率更改时为精灵/按钮生成位图。这将保持“完美”的质量。对于不同的窗口大小,您可以在列表中(甚至在文件中)保留位置,并在调整窗口大小时使用这些值。或者您可以将位置描述为窗口大小的百分比-即中间始终为
宽度*0.5
-或其他元素的百分比-即按钮上文本的中心为
按钮宽度*0.5
。在调整窗口大小时,必须重新计算所有元素的位置。在像Tkinter、PyQt、wxPython这样的GUI中,有一些布局管理器,它们根据其他元素的位置计算位置,而不使用像素(x、y)位置。您也可以将图形保留为SVG图像,然后动态缩放它们,以便在分辨率更改时为精灵/按钮生成位图。这将保持“完美”的质量。