Pygame Display显示模�详解

 
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 对象,把�解为画布�画��白纸在�适�过了,它相当于一个载体,用于承载一切游�所用到的元素。�如您需�将一段文本方放置到主窗�中,那么您需�先创建一个包�文本的 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 模å�—还æ��供了许多的和“显示”相关的方法,比如设置游æˆ�窗å�£çš„å��称,如下表所示
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程��行结果
图1:Pygame程��行结果

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。

关注公众�「站长严长生�,在手机上阅读所有教程,�时�地都能学习。本公众�由C语言中文网站长亲自��,长期更新,��原创。

公众�二维�
微信扫�关注公众�

 

加入微信交�群,一起学习�枯燥。内�一款�索神器,�费下载全网书�和视频。