Pygame Rect区域�置(图解)

 
Rect(rectangle)指的是矩形,或者长方形,在 Pygame 中我们使用 Rect() 方法�创建一个指定�置,大�的矩形区域。函数的语法格�如下:
rect =pygame.Rect(left,top,width,height) 
Rect 表示的区域必须�于一个 Surface 对象之上,比如游�的主窗�(screen)。上述方法由四个关键�数值构�,分别是 left�top�width�height,为了方便大家�解这些�离的�义,下�给出了一张示�图:

pygame Rect区域

注�:在 Pygame 中以游�主窗�的左上角为�标原点。

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

pygame.init()
screen = pygame.display.set_mode((500,300))

pygame.display.set_caption('c语言中文网')

image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.png")
rect1 = pygame.Rect(50,50,100,100)
# 在原图的基础上创建一个新的�图(surface对象)
image_child= image_surface.subsurface(rect1)
rect2 = image_child.get_rect()
#输出的矩形大�为 100*100
print(rect2)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
    #在�幕上显示�图的区域
    screen.blit(image_child,rect1)
    pygame.display.update()
程�的�行结果如下:

pygame游�程�
图1:程��行结果

从上述�行结果�以看出,我们在图片上截�了一个和 rect1 �样大�的矩形区域(100*100)。

Rect(矩形区域)对象还�供了一些常用方法。如下表所示:

方法 说明
pygame.Rect.copy() �制矩形
pygame.Rect.move() 移动矩形区域,接�一个列表�数
pygame.Rect.move_ip() 移动矩形(无返回)
pygame.Rect.inflate() 增大或缩�矩形大�
pygame.Rect.clamp() 将矩形移到�一个矩形内
pygame.Rect.union() 返回一个两个矩形�并�的矩形。
pygame.Rect.fit() 按纵横比调整矩形的大�或移动矩形。
pygame.Rect.contains() 测试一个矩形是�在�一个矩形内
pygame.Rect.collidepoint()  测试点是å�¦åœ¨çŸ©å½¢å†…
pygame.Rect.colliderect() 测试两个矩形是���

�时 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
下�看一组简�的示例演示,如下所示:
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)
输出结果如下:
x的值是0;y的值是0
bottom的值是100;right的值是100
#设置中心努力
(50, 50) 50 50
(50, 0)
#midright
(100, 50)
#bottomleft
(0, 100)
#size
(100, 100)
我们还�以通过属性对�设置,或者者更改矩形区域的大�,如下所示:
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))。

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

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

 

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