如何在Pygame窗口中居中显示图像?如何获取Pygame窗口的中心坐标?
在Pygame中获取窗口中心坐标并居中显示图片
嘿,这个问题我之前做小游戏的时候也碰到过!Pygame默认从左上角(0,0)开始绘制元素,要让图片居中,核心就是先拿到窗口的尺寸,再结合图片自身的大小来计算正确的绘制坐标。我给你拆解成几步,一看就懂:
1. 获取Pygame窗口的中心坐标
要拿到窗口的中心,有两种简单的方式:
- 方式一:先获取窗口表面,再通过尺寸计算中心
screen = pygame.display.get_surface() screen_width, screen_height = screen.get_size() center_x = screen_width // 2 center_y = screen_height // 2 - 方式二:利用Pygame的矩形对象特性,直接获取中心坐标
窗口表面的get_rect()方法会返回一个覆盖整个窗口的矩形,它的center属性直接就是窗口的中心坐标元组,一步到位:screen = pygame.display.get_surface() screen_center = screen.get_rect().center # 直接得到 (中心x, 中心y)
2. 让图片居中显示的完整流程
光有窗口中心还不够,得把图片的中心和窗口中心对齐才对。用Pygame的矩形对象可以轻松搞定,不用自己手动算偏移:
import pygame pygame.init() # 初始化窗口(这里设置为800x600,你可以按需修改) screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("居中显示图片") # 加载图片并获取其矩形对象 image = pygame.image.load("your_image.png").convert_alpha() image_rect = image.get_rect() # 将图片矩形的中心与窗口中心对齐 image_rect.center = screen.get_rect().center # 主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((255, 255, 255)) # 填充白色背景 screen.blit(image, image_rect) # 绘制图片 pygame.display.flip() pygame.quit()
甚至可以在获取图片矩形的时候直接指定中心,代码更简洁:
image_rect = image.get_rect(center=screen.get_rect().center)
小提示
如果你的窗口支持调整大小(比如初始化时加pygame.RESIZABLE参数),记得在每次窗口大小变化时重新计算中心坐标,不然图片会一直停留在原来的位置哦!
内容的提问来源于stack exchange,提问作者Debarka Naskar
相关产品推荐
相关产品推荐

