Pygame Rect区域�置(图解)
rect =pygame.Rect(left,top,width,height)Rect 表示的区域必须ä½�于一个 Surface 对象之上,比如游æˆ�的主窗å�£ï¼ˆscreen)。上述方法由四个关键å�‚数值构æˆ�,分别是 leftã€�topã€�widthã€�height,为了方便大家ç�†è§£è¿™äº›è·�离的å�«ä¹‰ï¼Œä¸‹é�¢ç»™å‡ºäº†ä¸€å¼ 示æ„�图:

注æ„�:在 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()
程�的�行结果如下:
图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è¯è¨€ä¸æ–‡ç½‘站长亲自è¿�è�¥ï¼Œé•¿æœŸæ›´æ–°ï¼Œå�šæŒ�原创。

微信扫ç �关注公众å�·
优秀文ç«
- Goè¯è¨€continue(继ç»ä¸‹ä¸€æ¬¡å¾ªçŽ¯ï¼‰
- void_Cè¯è¨€void关键å—详解
- Cè¯è¨€breakå’Œcontinue用法详解(跳出循环)
- å˜å‚¨ç»“构和å˜å�–结构,完全ä¸�是一ç �事ï¼�
- Python VS Code下载和安装教程
- CSS阴影效果(2�方法)
- 程�员结识新朋�的10个�由
- Hibernateæ ¸å¿ƒæŽ¥å�£ï¼ˆ5个)
- JSON对比工具
- 微�务是什么