You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:54:20