Pygame Rect区域位置(图解)

news/2024/7/7 21:15:10

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('python教程入门学习')*   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

下面看一组简单的示例演示,如下所示:


1.  import  pygame
2.  # 对应left/top/width/height
3.  rect1 = pygame.Rect(0,0,100,100)
4.  print('x的值是{};y的值是{}'.format(rect1.x,rect1.y))
5.  print('bottom的值是{};right的值是{}'.format(rect1.bottom,rect1.right))
6.  # 设置居中的距离
7.  print(rect1.center,rect1.centerx,rect1.centery)
8.  # 返回值为 (centerx,top)
9.  print(rect1.midtop)
10.  # 返回值为 (right,centery)的元组
11.  print(rect1.midright)
12.  # 返回值为(left,bottom)
13.  print(rect1.bottomleft)
14.  # 返回矩形区域大小,元组格式
15.  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))。


http://lihuaxi.xjx100.cn/news/272528.html

相关文章

springboot集成普罗米修斯

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章Prometheus 是一套开源的系统监控报警框架。它由工作在 SoundCloud 的 员工创建,并在 2015 年正式发布的开源项目。2016 年,Prometheus 正式加入 Cloud Native Computing…

Python中相见恨晚的技巧(记得收藏)

话不多说,直接开干,攒了很久! 1. 交换变量值 这个应该比较简单,但是日常用很容易忽略。 a, b 5, 10 print(a, b) //5, 10 a, b b, a print(a, b) //10, 5 | 2. 将列表中所有元素组合成字符串 这个其实也是一个基本语法…

Redis基础、应用、第三方支持组件总结

这段时间一直在研究学习Redis的相关知识,现在大概做下总结吧首先,Redis的基础方面,不说配置,就单单说下Redis数据类型:Redis 五大数据类型有String 类型,Hash 类型,List 类型,Set 类…

预训练模型ProphetNet:根据未来文本信息进行自然语言生成

作者 | 刘大一恒、齐炜祯、晏宇、宫叶云、段楠、周明来源 | 微软研究院AI头条(ID:MSRAsia)编者按:微软亚洲研究院提出新的预训练模型 ProphetNet,提出了一种新的自监督学习目标——同时预测多个未来字符,在序列到序列的…

nodejs安装、配置及开发工具

学了node一段时间,但是node的安装还是有一点迷糊。今天新换电脑,所以,需要从头开始,发现node的安装还是不顺畅,这篇随笔是之前学的时候写,但是今天再打开看的时候,发现其他好像没有什么内容&…

ICCV2021论文全汇总!附下载链接

大家好,对于CV领域的小伙伴,特别是从事研究的同学,我们需要不断去跟进一些新的研究成果,因为这些最新的成果,也许能够对当前的研究工作有思路上启发,又或许能够对现有的方案有质的变化!因此&…

HP交换机配置命令

1.命名hostname 7-West-4F-2510 2.设置管理IPvlan 1ip address 192.168.41.123 255.255.255.03.修改支持的默认vlan数max-vlans 64max-vlans //修改vlan的数量,默认只有8个,修改后需重启后才可生效4.重启reload //重启交换机5.配置v…

一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章作者:huanzi-qchcnblogs.com/huanzi-qch/p/11534203.html前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理&#…