当前位置: 首页 > 工具软件 > Pygame > 使用案例 >

Pygame 官方文档 - pygame.Rect

羊舌胡非
2023-12-01

pygame.Rect

pygame用来储存矩形坐标(rectangular coordinates)的对象
Rect(left, top, width, height) -> Rect
Rect((left, top), (width, height)) -> Rect
Rect(object) -> Rect
注意:这里的 xxx_ip 指的是 in-place,指的是原地修改Rect对象,不会返回新的Rect对象,它返回None但会影响原始的Rect对象。这在模块描述中也有提到。
pygame.Rect.copy - 复制矩形(rectangle)
pygame.Rect.move - 移动矩形
pygame.Rect.move_ip - 就在原地位置移动矩形
pygame.Rect.inflate - 增大或缩小矩形大小
pygame.Rect.inflate_ip - 就在原地位置增大或缩小矩形大小
pygame.Rect.clamp - 将矩形移动到另一个内部
pygame.Rect.clamp_ip - 将矩形就在原地位置移动到另一个内部
pygame.Rect.clip - 在另一个内部裁剪一个矩形
pygame.Rect.union - 将两个矩形连接成一个
pygame.Rect.union_ip - 将两个矩形就在原地位置连接成一个
pygame.Rect.unionall - 许多矩形的并集
pygame.Rect.unionall_ip - 许多矩形就在原地位置并集
pygame.Rect.fit - 使用纵横比调整大小并移动的矩形
pygame.Rect.normalize - 更正负大小
pygame.Rect.contains - 测试一个矩形是否在另一个矩形内
pygame.Rect.collidepoint - 测试一个点是否在矩形内
pygame.Rect.colliderect - 测试两个矩形是否重叠
pygame.Rect.collidelist - 测试列表中的一个矩形是否相交
pygame.Rect.collidelistall - 测试列表中的所有矩形是否相交
pygame.Rect.collidedict - 测试字典中的一个矩形是否相交
pygame.Rect.collidedictall - 测试字典中的所有矩形是否相交

        Pygame使用Rect对象来存储和操作矩形区域。 可以从left,top,width和height值的组合创建Rect对象。 也可以从已经是Rect对象或具有名为“rect”的属性的python对象创建Rect对象。
        任何需要Rect参数的pygame函数也接受任何这些值来构造Rect。 这使得动态创建Rect对象更容易作为函数的参数。
        更改Rect的位置或大小的Rect函数返回被影响更改的Rect的新副本。 原始的Rect未被修改。 某些方法有一个备用的“原地(in-place)”版本【指的是原地修改Rect对象,不会返回新的Rect对象】,它返回None但会影响原始的Rect对象。 这些“原地”的方法用“ip”的后缀表示。
Rect对象有几个虚拟属性,可用于移动和对齐Rect:

x,y
top, left, bottom, right
topleft, bottomleft, topright, bottomright
midtop, midleft, midbottom, midright
center, centerx, centery
size, width, height
w,h

所有这些属性都可以分配给:

rect1.right = 10
rect2.center = (20,30)

        赋值大小,宽度或高度会改变矩形的尺寸;所有其他赋值语句移动矩形而不调整其大小。请注意,某些属性是整数,其他属性是整数对。
        如果Rect对象具有非零宽度或高度,则对于非零测试,它将返回True。某些方法返回一个0大小的Rect对象来表示无效的矩形。
        Rect对象的坐标都是整数。可以将大小值编为负值,但对于大多数操作,这些被认为是非法的Rect对象。
        其他矩形之间有几个碰撞测试。可以搜索大多数python容器与单个Rect的冲突。
        Rect对象覆盖的区域不包括像素的最右边和最底边。如果一个Rect对象的底部边框是另一个Rect对象的顶部边框(即rect1.bottom = rect2.top),则两者完全在屏幕上相遇但不重叠,rect1.colliderect(rect2)返回false。
        Rect类可以是子类。 copy()和move()等方法将识别出这个并返回子类的实例。但是,子类 __init __()方法不会被调用,并且假定__new __()不带参数。因此,如果需要复制任何额外属性,则应覆盖这些方法。 pygame 1.9.2中的新功能。
 

pygame.Rect.copy()

复制矩形(rectangle)
copy() -> Rect
返回与原始位置和大小相同的新矩形。
pygame 1.9中的新功能

搜索pygame.Rect.copy的示例

pygame.Rect.move()

移动矩形
move(x, y) -> Rect
返回由给定偏移量移动的新矩形。 x和y参数可以是任何整数值,正数或负数。
搜索pygame.Rect.move的示例

pygame.Rect.move_ip()

就在原地位置移动矩形
move_ip(x, y) -> None
与Rect.move()方法相同,但就在原地位置操作。
搜索pygame.Rect.move_ip的示例

pygame.Rect.inflate()

增大或缩小矩形大小
inflate(x, y) -> Rect
返回一个新的矩形,其大小由给定的偏移量改变。 矩形保持以其当前中心为中心。 负值会缩小矩形。 注意,使用整数,如果给定的偏移量太小(<2> -2),则中心位置将会被关闭。
搜索pygame.Rect.inflate的示例

pygame.Rect.inflate_ip()

就在原地位置增大或缩小矩形大小
inflate_ip(x, y) -> None
与Rect.inflate()方法相同,但就在原地位置操作。
搜索pygame.Rect.inflate_ip的示例

pygame.Rect.clamp()

将矩形移动到另一个内部
clamp(Rect) -> Rect
返回一个新的矩形,该矩形完全移动到参数Rect对象中。 如果矩形太大而无法放入内部,则它在参数Rect对象内居中,但其大小不会更改。
搜索pygame.Rect.clamp的示例

pygame.Rect.clamp_ip()

将矩形就在原地位置移动到另一个内部
clamp_ip(Rect) -> None
与Rect.clamp()方法相同,但就在原地位置操作。
搜索pygame.Rect.clamp_ip的示例

pygame.Rect.clip()

在另一个内部裁剪一个矩形
clip(Rect) -> Rect
返回一个新的矩形,该矩形被裁剪为完全位于参数Rect内。 如果两个矩形不重叠,则返回一个0大小的Rect。
搜索pygame.Rect.clip的示例

pygame.Rect.union()

将两个矩形连接成一个
union(Rect) -> Rect
返回一个完全覆盖两个提供的矩形区域的新矩形。 新Rect中可能存在未被原件覆盖的区域。
搜索pygame.Rect.union的示例

pygame.Rect.union_ip()

将两个矩形就在原地位置连接成一个
union_ip(Rect) -> None
与Rect.union()方法相同,但就在原地位置操作。
搜索pygame.Rect.union_ip的示例

pygame.Rect.unionall()

许多矩形的并集
unionall(Rect_sequence) -> Rect
返回一个矩形与一系列矩形序列的并集。
搜索pygame.Rect.unionall的示例

pygame.Rect.unionall_ip()

许多矩形原地的并集
unionall_ip(Rect_sequence) -> None
与Rect.unionall()方法相同,但就在原地位置操作。

搜索pygame.Rect.unionall_ip的示例

pygame.Rect.fit()

使用纵横比调整大小并移动的矩形
fit(Rect) -> Rect
返回一个新矩形,这个矩形移动并调整大小以适合另一个矩形。 保留原始Rect对象的纵横比,因此新的矩形可以在宽度或高度上小于目标。
搜索pygame.Rect.fit的示例

pygame.Rect.normalize()

更正负大小
normalize() -> None
如果矩形有负大小,这将翻转矩形的宽度或高度。 矩形将保持在同一位置,只交换侧面。
搜索pygame.Rect.normalize的示例

pygame.Rect.contains()

测试一个矩形是否在另一个矩形内
contains(Rect) -> bool
当参数完全在Rec对象内部时返回true。
搜索pygame.Rect.contains的示例

pygame.Rect.collidepoint()

测试一个点是否在矩形内
collidepoint(x, y) -> boo
collidepoint((x,y)) -> bool
如果给定的点在矩形内,则返回true。 沿右边或底边的点不被视为在矩形内。
搜索pygame.Rect.collidepoint的示例

pygame.Rect.colliderect()

测试两个矩形是否重叠
colliderect(Rect) -> bool
如果任一矩形的任何部分重叠(顶部+底部或左侧+右侧边缘除外),则返回true。
搜索pygame.Rect.colliderect的示例

pygame.Rect.collidelist()

测试列表中的一个矩形是否相交
collidelist(list) -> index
测试矩形是否与矩形序列中的任何一个发生碰撞。 返回找到的第一个碰撞的索引。 如果未发现冲突,则返回-1的索引。
搜索pygame.Rect.collidelist的示例

pygame.Rect.collidelistall()

测试列表中的所有矩形是否相交
collidelistall(list) -> indices
返回包含与Rect冲突的矩形的所有索引的列表。 如果未找到相交的矩形,则返回空列表。
搜索pygame.Rect.collidelistall的示例

pygame.Rect.collidedict()

测试字典中的一个矩形是否相交
collidedict(dict) -> (key, value)
返回与Rect对象冲突的第一个字典值的键和值。 如果未找到任何冲突,则返回None。
Rect对象是不可哈希的,不能用作字典中的键,只能用作值。
搜索pygame.Rect.collidedict的示例

pygame.Rect.collidedictall()

测试字典中的所有矩形是否相交
collidedictall(dict) -> [(key, value), …]
返回与Rect对象相交的所有键和值对的列表。 如果未找到冲突,则返回空列表。
Rect对象是不可哈希的,不能用作字典中的键,只能用作值。
搜索pygame.Rect.collidedictall的示例
 

以上文档,自己翻译,可能有误,可参考:pygame.Rect

点我回顶部

 
 
 
 
 
 
 
Fin.

 类似资料: