Pygame Display模块详解:窗口创建与Surface渲染

蓝鲸
蓝鲸
发布时间:2026-10-14| 4人浏览过
原创

本文详细介绍Pygame中display模块的核心功能,包括如何使用set_mode创建游戏主窗口及设置全屏、无边框等样式标志。深入解析Surface对象作为“画布”的概念,讲解如何利用blit方法将子Surface粘贴至主窗口,涵盖参数source、dest、area及special_flags的具体用法。此外,还列举了set_caption、flip、update等常用显示控制方法,帮助开发者掌握Pygame的基础图形显示逻辑。

Pygame主窗口创建与参数设置

在Pygame中,开发者通过调用pygame.display模块下的方法来实现游戏主窗口的创建。


screen = pygame.display.set_mode(size=(),flags=0)

该创建函数主要包含两个常用参数,用于定义窗口的初始状态。

  • size参数接收一个元组,用于指定主窗口的宽度和高度。
  • flags参数为功能标志位,用于定义主窗口的显示样式,例如创建全屏窗口或无边框窗口等,具体的flags参数取值请参考下表。

标志位 功能
pygame.FULLSCREEN 创建一个全屏窗口。
pygame.HWSURFACE 创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用。
pygame.OPENGL 创建一个 OPENGL 渲染窗口。
pygame.RESIZABLE 创建一个可以改变大小的窗口。
pygame.DOUBLEBUF 创建一个双缓冲区窗口,建议在 HWSURFACE 或者 OPENGL 时使用。
pygame.NOFRAME 创建一个没有边框的窗口。

Surface对象与blit粘贴方法解析

熟悉电脑游戏的用户都知道,程序运行后桌面上出现的主窗口,其本质是一个Surface对象。可以将其形象地理解为画布、画板或白纸,它是承载所有游戏元素的载体。若需在主窗口中显示文本,必须先创建一个包含该文本的Surface对象,随后将其附加到主窗口上。通俗而言,这相当于将一张图片A粘贴到另一张图片B上。

主窗口(screen)是游戏程序中尺寸最大的Surface对象。在这个最大的“画布”内部,还可以添加其他较小的Surface对象,这些对象以矩形形式存在于主窗口中,共同构成完整的游戏程序。以下方法可用于将一个Surface对象粘贴至主窗口:


scrren.blit(source, dest, area=None, special_flags = 0)

对上述参数进行简要说明:

  • source:指代需要被粘贴的Surface对象。
  • dest:表示主窗口中的目标坐标位置,可接受(x,y)元组、(x,y,width,height)元组或Rect对象。
  • area:接收一个Rect对象,默认为None。若提供此参数,则执行类似“抠图”的操作,仅在屏幕指定区域显示所需内容。
  • special_flags:为可选参数,是Pygame 1.8版本新增的功能,用于指定对应位置的颜色混合方式,可选值包括BLEND_RGBA_ADD、BLEND_SUB等。若未提供该参数,默认行为是使用source的颜色覆盖screen的颜色。

Display模块其他显示控制方法

除创建游戏主窗口外,display模块还提供了多个与“显示”相关的方法,例如设置游戏窗口的标题,具体方法见下表。


import sys
import pygame
#使用pygame之前必须初始化
pygame.init()
#设置主屏窗口
screen = pygame.display.set_mode((400,400))
#填充主窗口的背景颜色,参数值RGB(颜色元组)
screen.fill((156,156,156))
#设置窗口标题
pygame.display.set_caption('c语言中文网')
# 如果没有下列主循环代码,运行结果会一闪而过
while True:
    # 循环获取事件,监听事件
    for event in pygame.event.get():
        # 判断用户是否点了关闭按钮
        if event.type == pygame.QUIT:
            #卸载所有模块
            pygame.quit()
            #终止程序
            sys.exit()
    #更新屏幕内容
    pygame.display.flip()

程序的运行结果如下所示:

pygame.display模块还提供了一些其他与“显示”相关的辅助方法,具体列表如下:

方法名称 说明
pygame.display.get_surface() 获取当前显示的 Surface 对象。
pygame.display.flip() 更新整个待显示的 Surface 对象到屏幕上。
pygame.display.update() 更新部分软件界面显示。
pygame.display.Info() 产生一个 VideoInfo 对象,包含了显示界面的相关信息。
pygame.display.set_icon() 设置左上角的游戏图标,图标尺寸大小为 32*32。
pygame.display.iconify() 将显示的主窗口即 Surface 对象最小化,或者隐藏。
pygame.display.get_active() 当前显示界面显示在屏幕上时返回 True,如果窗口被隐藏和最小化则返回 False。

至此,关于Pygame Display显示模块的使用介绍完毕。如需了解更多相关内容,建议搜索本站往期文章或继续阅读后续文章,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。