主要内容 #
- 模块介绍
- 模块参数说明
- 使用示例
收获 #
会使用surface模块新建和使用图像对象。
1.模块介绍 #
pygame.Surface是Pygame 中用于表示图像的对象的模块。
Pygame 的 Surface 对象用于表示任何一个图像,Surface 对象具有固定的分辨率和像素格式。只需要指定尺寸,就能调用 pygame.Surface() 创建一个新的图像对象,创建出来的 Surface 默认是全黑色。如果没有指定其他参数,将创建出最适合当前显示器的 Surface 对象。
2.模块参数说明 #
Pygame 针对文本、图像、颜色提供了不同模块来生成它们各自的 Surface 对象。Surface 模块是Pygame 中专门用来新建图像的,通过该模块可以创建一个 Surface 对象,语法格式如下:
Surface=pygame.Surface(size=(width,height),flags,depth)
参数函数如下:
1、size:表示 Surface 对象的矩形区域大小;
2、flags:功能标志位,有两个可选参数值 HWSURFACE 和 SPCALPHA,前者代表将创建的 Surface 对象存放于显存中,后者表示让图像的每一个像素都包含一个 alpha 通道
3、depth:指定像素的颜色深度,默认为自适应模式,由 Pygame 自动调节。
具体使用如下:
face = pygame.Surface((50, 50), flags=pygame.HWSURFACE)
Surface 模块还提供了处理图像的其他方法,下表对它们做了简单的介绍。
除了使用 Surface 模块新建图像外,我们还可以使用另外一种方法从外部加载图像,如下所示:
pygame.image.load(“图片路径”).convert()
上述方法将被加载的图像作为 Surface 对象来使用,因此它可以调用上述表格中所有方法。注意,此处之所以使用 convert()来转换被加载图片的像素格式,是为了提升 Pygame 对图片的处理速度,该操作能够保证图像的像素格式与图片的显示格式是相同的。
image_surface = pygame.image.load("C:/Users/91566/Desktop/dashima/logo.png").convert()
3.使用示例 #
下面看一组简单的surface使用示例,如下所示:
import sys import pygame # 使用pygame之前必须初始化 pygame.init() # 设置主屏窗口 ;设置全屏格式:flags=pygame.FULLSCREEN screen = pygame.display.set_mode((400, 400)) # 设置窗口标题 pygame.display.set_caption('大师码') 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() # 更新屏幕内容
最终的显示结果如下:
拓展练习:生成一个30*30的图像并设置颜色为绿色。
通过 image.load() 方法可以加载游戏的背景图,或者游戏中使用的其他元素,比如的人物、道具等等。
下面看一组简单的示例:
所使用到的logo图片点击下载
import pygame # 引入pygame中所有常量,比如 QUIT from pygame.locals import * pygame.init() screen = pygame.display.set_mode((400, 200)) pygame.display.set_caption('大师码') # 加载一张图片 image_surface = pygame.image.load("C:/Users/91566/Desktop/dashima/logo.png").convert() # rect(left,top,width,height)指定图片上某个区域 # special_flags功能标志位,指定颜色混合模式,默认为 0 表示用纯色填充 image_surface.fill((0, 0, 255), rect=(25, 25, 25, 10), special_flags=0) # 50,25 表示图像在水平、垂直方向上的偏移量,以左上角为坐标原点 image_surface.scroll(50, 25) # 无限循环,让窗口停留 while True: for event in pygame.event.get(): if event.type == QUIT: exit() # 将图像放置在主屏幕上 screen.blit(image_surface, (100, 50)) pygame.display.update()
最终的显示结果如下:
拓展练习:更改上述代码中指定图片上的区域,用红色填充。
小结 #
本节主要介绍了pygame.surface模块的一些处理图像的常用方法,并给出实例使用了pygame.Surface.convert()来修改图像(Surface 对象)的像素格式、pygame.Surface.fill()来使用纯色填充 Surface 对象、pygame.Surface.scroll()来复制并移动 Surface 对象。
练习 #
1.在主窗口中创建一个 100*100 的图像,并优化显示,填充颜色为绿色。
2.在窗口中从外部加载一个图片,使其向左下方向复制并移动100和50个偏移量。
3.在窗口中从外部加载一个图片,将图片设置为半透明。