Pygame Rect区域位置的使用(图文)
作者:zx 发布时间:2023-08-14 05:27:48
Rect(rectangle)指的是矩形,或者长方形,在 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))。
来源:http://c.biancheng.net/pygame/rect.html


猜你喜欢
- 相信只要学习python的同学对于虚拟环境这个概念肯定不会太陌生,虚拟环境指的是一个个单独隔离的python开发环境。各个虚拟环境之间互不干
- MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型下面
- 前言大部分初学编程的人来说刚开始都会练习判断两个数或者三个数的大小,来熟悉某种语言的特性和最基本的if,else循环,当我们学习了更高级的语
- 创建一个表T_Employee并插入若干数据 代码如下:create table T_Employee(FNumber VARC
- “输入框( Input )应当符合逻辑地划分为小组,这样大脑就可以很好的处理大堆区域间的关系。”– 《HTML权威指南》Web 应用程序总是
- 上一章节学习了如何在 PPT 中添加段落以及自定义段落(书写段落的内容以及样式的调整),今天的章节将学习在 PPT 中插入表格与图片以及在表
- 引言:关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂。偶尔发现了这篇文章,总结得很经典,文章流量也
- 很多时候,查看一个文件夹下的每个文件大小可以轻易的做到,因为文件后面就是文件尺寸,但是如果需要查看一个文件夹下面所有的文件夹对应的尺寸,就发
- Fuko Masked 是 Kaloyan Tsvetkov 的一个小型PHP库,用于通过用编辑后的元素替换列入黑名单的元素来屏蔽敏感数据。
- 范围选区概述范围选区是一种常见的对象选择方式,在一个子图中,可以在某一个轴方向上用鼠标选择起始范围的数据,这个特性可用来实现数据缩放(dat
- 本文介绍了两个asp实用的技巧,一是使用asp强制刷新页面,二是判断一个文件是否存在强制刷新网页 强制性刷新随机验证码 ,让随机验
- 链接字典chainMap是逻辑上合并两个字典为一个逻辑单元,合并后的结构实际上是一个列表,只是逻辑上是仍然为一个字典(并未生成新的),对此列
- 索引概述介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这
- HTML5,被传为Flash 的杀手,是一种用于web 应用程序开发、具有变革意义的网络技术。HTML 5提供了一些新的元素和属性,其中有些
- 由于ajax在跨域的访问上有问题,目前最好的方法是做代理.写了个代理程序和心得为了做ajax的代理,研究了下服务器端的xmlhttp并和客户
- 目录:1、脚本式开发.2、工程化开发3、工程化和脚本的区别4、来个table试试水4,1、目标4.2、思路4.3、设计与编码4.4、效果5、
- %r用rper()方法处理对象%s用str()方法处理对象相同结果有些情况下,两者处理的结果是一样的,比如说处理int型对象。例:print
- 经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中
- 然而有些情况只需要传递几个文件,而且文件体积并不太大,这种情况下使用组件则有点牛刀杀鸡的感觉,通过html自带的<input type
- 使用time模块可以查看并处理时间和日期相关内容。一、时间的表示格式在Python中,表示时间的格式有4种较为常用,分别是浮点数格式、标准可