Pygame重新缩放gameresolution+坐标

2024-04-25 01:39:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我搜索了很多关于这个问题,但似乎没有帖子回答这个具体问题。 所以我正在做一个pygame应用程序,我对这个非常陌生。对于屏幕缩放,我使用以下代码行获取用户的屏幕信息:

infoObject = pygame.display.Info()
ScreenWidth = infoObject.current_w
ScreenHeight = infoObject.current_h
window = pygame.display.set_mode((ScreenWidth, ScreenHeight), pygame.FULLSCREEN)

但我的问题是:我使用我当前的显示统计数据,但另一个用户显然可以有其他统计数据。但是,对于文本的放置,我使用了如下方法:

window.blit(text, (ScreenWidth/2 - text.get_rect().width/2, ScreenHeight*0.6))

把它放在屏幕中间。如果分辨率改变,文本的位置也会改变。你知道吗

有时我也会使用以下方法:

window.blit(text, (ScreenWidth/2 - text.get_rect().width/2-500, ScreenHeight*0.6))

将文本向左移动。如果屏幕的宽度只有720(例如),它将不可见。但是,由于我在这里与相对位置的工作,原来的布局/设计也将不再出现。有人知道我如何“重新缩放”我的游戏屏幕,使它“自动”重新缩放我的文字位置,如果这是有意义的:)?你知道吗


Tags: 方法text用户文本get屏幕displaycurrent
1条回答
网友
1楼 · 发布于 2024-04-25 01:39:26

这是基本的代数:你缩放屏幕中点,但你没有缩放到新的屏幕尺寸的运动。因为您没有指定“我的当前显示统计信息”在实际值中的含义,所以。。。你知道吗

width_factor  = ScreenWidth  / my_current_display_width
height_factor = ScreenHeight / my_current_display_height
move_dist = 500 * width_factor
new_x = ScreenWidth/2 - text.get_rect().width/2 - 500
window.blit(text, (new_x, ScreenHeight*0.6))

我很怀疑你施展的魔法,那是从哪里来的?应该是height_factor?你知道吗

相关问题 更多 >