Pygame中第二条直线无法绘制问题求助
解决Pygame全屏模式下仅显示第一条直线的问题
问题根源是全屏模式的分辨率适配:你指定了(1000,800)的窗口尺寸,但启用pygame.FULLSCREEN后,Pygame会自动将窗口切换为显示器的原生分辨率,而非你设置的尺寸。这导致第二条线的坐标(999,0)、(999,799)超出了实际显示区域,因此无法看到。
以下是两种可行的解决方案:
方案1:基于实际全屏分辨率绘制
先获取显示器的原生分辨率,再以此为基准绘制线条,确保坐标在显示范围内:
import pygame pygame.init() # 获取显示器实际分辨率 screen_info = pygame.display.Info() screen_w, screen_h = screen_info.current_w, screen_info.current_h WINDOW = pygame.display.set_mode((screen_w, screen_h), pygame.FULLSCREEN) while True: # 处理退出事件(避免全屏卡死) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit() if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: pygame.quit() exit() WINDOW.fill((0,0,0)) # 左侧竖线 pygame.draw.line(WINDOW, (255,255,255), (0,0), (0, screen_h-1)) # 右侧竖线 pygame.draw.line(WINDOW, (255,255,255), (screen_w-1,0), (screen_w-1, screen_h-1)) pygame.display.update()
方案2:强制缩放指定分辨率至全屏
如果你坚持使用(1000,800)的画布尺寸,可以添加pygame.SCALED标志,让Pygame自动将画布缩放适配全屏:
import pygame pygame.init() WINDOW = pygame.display.set_mode((1000,800), pygame.FULLSCREEN | pygame.SCALED) while True: for event in pygame.event.get(): if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): pygame.quit() exit() WINDOW.fill((0,0,0)) pygame.draw.line(WINDOW, (255,255,255), (0,0),(0,799)) pygame.draw.line(WINDOW, (255,255,255), (999,0),(999,799)) pygame.display.update()
注意:原代码缺少事件处理逻辑,全屏模式下无法正常退出,建议补充上述代码中的退出事件处理,避免程序卡死。
内容的提问来源于stack exchange,提问作者Ihaveknowideawhatimdoing
相关产品推荐
相关产品推荐

