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

Pygame仅显示图片中间区域问题求助

问题解决方法

核心问题分析

  1. 窗口尺寸超出显示器分辨率:代码直接用图片尺寸设置窗口大小,如果图片分辨率超过当前显示器的最大显示尺寸,PyGame会自动将窗口缩小到显示器能容纳的范围,导致仅显示图片中间区域。
  2. 白色填充被覆盖:代码中先执行window.fill((255,255,255))再绘制图片,而JPG格式无透明通道,图片会完全覆盖白色背景,因此看不到填充效果。

修正后的代码

import pygame, sys

pygame.init()

# 加载地图图片
image = pygame.image.load("map.jpg")
img_width, img_height = image.get_size()

# 获取显示器最大分辨率
display_info = pygame.display.Info()
max_screen_width = display_info.current_w
max_screen_height = display_info.current_h

# 计算适配窗口的缩放比例,确保图片完整显示
scale = min(max_screen_width / img_width, max_screen_height / img_height)
window_width = int(img_width * scale)
window_height = int(img_height * scale)

# 创建适配显示器的窗口
window = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption("show picture")

# 缩放图片以匹配窗口
scaled_image = pygame.transform.scale(image, (window_width, window_height))

# 主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    window.fill((255, 255, 255))
    window.blit(scaled_image, (0, 0))
    pygame.display.flip()

额外说明

  • 如果想看到白色填充区域,可以将窗口尺寸设置为比图片略大,比如在计算window_width和window_height时额外增加一些像素,或者使用带透明通道的PNG图片。
  • 若需要支持窗口缩放(用户可拖动调整大小),可以将set_mode的参数改为(window_width, window_height, pygame.RESIZABLE),并在事件循环中处理窗口大小变化的逻辑。

内容的提问来源于stack exchange,提问作者kingananas2.0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:22:45