Pygame Surface创建图�

 
通过��内容的介�,我们对 Surface 对象有了大体上的认识。Pygame 针对文本�图��颜色�供了��模��生�它们�自的 Surface 对象。Surface 模�是Pygame 中专门用�新建图�的,通过该模��以创建一个 Surface 对象,语法格�如下:
Surface=pygame.Surface(size=(width,height),flags,depth)
�数函数如下:
  • size:表示 Surface 对象的矩形区域大å°�ï¼›
  • flags:功能标志ä½�,有两个å�¯é€‰å�‚数值 HWSURFACE å’Œ SPCALPHA,å‰�者代表将创建的 Surface 对象存放于显存中,å�Žè€…表示让图åƒ�çš„æ¯�一个åƒ�素都包å�«ä¸€ä¸ª alpha  通é�“
  • depth:指定åƒ�素的颜色深度,默认为自适应模å¼�,由 Pygame 自动调节。

下�看一组简�的使用示例,如下所示:
import sys
import pygame


#使用pygame之�必须�始化
pygame.init()
#设置主�窗� ;设置全�格�:flags=pygame.FULLSCREEN
screen = pygame.display.set_mode((400,400))
#设置窗�标题
pygame.display.set_caption('c语言中文网')
screen.fill('white')
#创建一个 50*50 的图�,并优化显示
face = pygame.Surface((50,50),flags=pygame.HWSURFACE)
#填充颜色
face.fill(color='pink')

while True:
    # 循环获�事件,监�事件
    for event in pygame.event.get():
        # 判断用户是�点了关闭按钮
        if event.type == pygame.QUIT:
            #�载所有模�
            pygame.quit()
            #终止程�
            sys.exit()
    # 将绘制的图�添加到主�幕上,(100,100)是�置�标,显示�的左上角为�标系的(0,0)原点
    screen.blit(face, (100, 100))
    pygame.display.flip() #更新�幕内容
最终的显示结果如下:

pygame surface对象
图1:程��行结果

从上述�行结果�以看出,通过 Surface 模�,我们�功的在主�幕上绘制一个 50 * 50 的矩形区域。注�,如果�设置尺寸,Surface 默认创建一个和主游��幕�样大�的区域。

Surface 模�还�供了处�图�的其他方法,下表对它们�了简�的介�。

方法 说明
pygame.Surface.blit()  将一个图åƒ�(Surface 对象)绘制到å�¦ä¸€ä¸ªå›¾åƒ�上
pygame.Surface.convert()  修改图åƒ�(Surface 对象)的åƒ�ç´ æ ¼å¼�
pygame.Surface.fill()   使用纯色填充 Surface 对象
pygame.Surface.scroll()  å¤�制并移动 Surface 对象
pygame.Surface.set_alpha()  设置整个图åƒ�çš„é€�明度
pygame.Surface.get_at()  获å�–一个åƒ�素的颜色值
pygame.Surface.set_at()  设置一个åƒ�素的颜色值
pygame.Surface.get_palette() 获� Surface 对象 8 �索引的调色�
pygame.Surface.map_rgb()   将一个 RGBA 颜色转æ�¢ä¸ºæ˜ å°„的颜色值
pygame.Surface.set_clip()  设置该 Surface 对象的当å‰�剪切区域
pygame.Surface.subsurface()   æ ¹æ�®çˆ¶å¯¹è±¡åˆ›å»ºä¸€ä¸ªæ–°çš„å­� Surface 对象
pygame.Surface.get_offset() 获�� Surface 对象在父对象中的�移�置
pygame.Surface.get_size() 获� Surface 对象的尺寸

除了使用 Surface 模�新建图�外,我们还�以使用�外一�方法从外部加载图�,如下所示:
pygame.image.load("图片路径").convert()  
上述方法将被加载的图�作为 Surface 对象�使用,因此它�以调用上述表格中所有方法。注�,此处之所以使用 convert()�转�被加载图片的�素格�,是为了�� Pygame 对图片的处�速度,该�作能够��图�的�素格�与图片的显示格�是相�的。

通过 image.load() 方法�以加载游�的背景图,或者游�中使用的其他元素,比如的人物��具等等。

下�看一组简�的示例:
import pygame
#引入pygame中所有常�,比如 QUIT
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((500,250))
pygame.display.set_caption('c语言中文网')
#加载一张图片
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png").convert()

# rect(left,top,width,height)指定图片上�个区域
# special_flags功能标志�,指定颜色混�模�,默认为 0 表示用纯色填充
image_surface.fill((0,0,255),rect=(100,100,100,50),special_flags=0)
# 200,100 表示图�在水平�垂直方�上的�移�,以左上角为�标原点
image_surface.scroll(100,50)
# 无�循环,让窗��留
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    # 将图�放置在主�幕上
    screen.blit(image_surface,(0,0))
    pygame.display.update()
程��行结果如下所示:

pygame�行程�
图2:程��行结果

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

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

 

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