Pygame Display模块详解:窗口创建与Surface渲染
本文详细介绍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显示模块的使用介绍完毕。如需了解更多相关内容,建议搜索本站往期文章或继续阅读后续文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









