主要内容 #
- 模块介绍
- 模块参数说明
- 使用示例
收获 #
会使用rect模块构建矩形框等。
1.模块介绍 #
pygame.Rect是pygame用来储存矩形坐标(rectangular coordinates)的对象的模块。
Pygame使用Rect对象来存储和操作矩形区域。可以从left,top,width和height值的组合创建Rect对象。也可以从已经是Rect对象或具有名为“rect”的属性的python对象创建Rect对象。
2.模块参数说明 #
Rect(rectangle)指的是矩形,或者长方形,在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。函数的语法格式如下:
rect =pygame.Rect(left,top,width,height)
Rect 表示的区域必须位于一个 Surface 对象之上,比如游戏的主窗口(screen)。
上述方法由四个关键参数值构成,分别是 left、top、width、height,为了方便大家理解这些距离的含义,下面给出了一张示意图:
注意:在 Pygame 中以游戏主窗口的左上角为坐标原点。
Rect(矩形区域)对象还提供了一些常用方法。如下表所示:
同时 Rect 对象也提供了一些关于矩形大小的常用的属性,如下所示:
x,y #表示矩形距离 x、y 轴的距离
top, left, bottom, right #在坐标系内描述矩形的大小
topleft, bottomleft, topright, bottomright #返回一个描述矩形大小的元组
midtop, midleft, midbottom, midright #返回一个描述矩形大小的元组
center, centerx, centery #(centerx,centery)表示矩形中央坐标(x,y)的值
size, width, height
w,h #用于描述矩形的width、height
我们还可以通过属性对来设置,或者者更改矩形区域的大小,如下所示:
rect1.left = 30 rect1.center = (70,70)
除了通过 Rect 对象来构造一个矩形区域之外,我们还可以使用rect属性来构建一个矩形区域。在 Pygame 中有许多函数都提供了rect属性,比如有下列函数:
surface.fill((0,0,255),rect=(100,100,100,50))
上述代码会在 surface 对象的区域内选定一个 rect 区域,并将该区域填充为蓝色(RGB(0,0,255))。
3.使用示例 #
下面看一组简单的使用示例,如下所示:
程序所用logo.png图片,点击下载
import pygame pygame.init() screen = pygame.display.set_mode((500, 300)) pygame.display.set_caption('大师码') image_surface = pygame.image.load("C:/Users/91566/Desktop/dashima/logo.png") rect1 = pygame.Rect(10, 10, 50, 50) # 在原图的基础上创建一个新的子图(surface对象) image_child = image_surface.subsurface(rect1) rect2 = image_child.get_rect() # 输出的矩形大小为 50*50 print(rect2) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() # 在屏幕上显示子图的区域 screen.blit(image_child, rect1) pygame.display.update()
程序的运行结果如下:
从上述运行结果可以看出,我们在图片上截取了一个和 rect1 同样大小的矩形区域(50*50)。
拓展练习:将上述代码rect1向右移动10个偏移量。
下面看一组简单的关于矩形大小的常用的属性示例演示,如下所示:
import pygame # 对应left/top/width/height rect1 = pygame.Rect(0, 0, 100, 100) print('x的值是{};y的值是{}'.format(rect1.x, rect1.y)) print('bottom的值是{};right的值是{}'.format(rect1.bottom, rect1.right)) # 设置居中的距离 print(rect1.center, rect1.centerx, rect1.centery) # 返回值为 (centerx,top) print(rect1.midtop) # 返回值为 (right,centery)的元组 print(rect1.midright) # 返回值为(left,bottom) print(rect1.bottomleft) # 返回矩形区域大小,元组格式 print(rect1.size)
输出结果如下:
小结 #
本节主要介绍了pygame.rect模块的一些常用方法,具体学习了 font.SysFont()、 font.Font()和字体对象方法pygame.font.Font.render() 并给出实例。
练习 #
1.加载一张图片,在原图的基础上创建一个新的子图(surface对象),其长宽为100*100,在屏幕上显示子图的区域。
2.创建一个100*50的矩形,通过rect对象方法,将其扩大两倍。
3.创建两个矩形,并检验两者是否有重合。