pygame中Rect对象的方法详解

目录

copy()

move()

move_ip()

inflate()

inflate_ip()

clamp()

clamp_ip()

clip()

clipline()

union()

union_ip()

unionall()

unionall_ip()

fit()

normalize()

contains()

collidepoint()

colliderect()

collidelist()

collidelistall()

collidedict()

collidedictall()


copy()

功能:复制矩形

属性:copy() -> Rect

返回与原始矩形具有相同位置和大小的新矩形。

New in pygame 1.9

move()

功能:移动矩形

属性:move(x, y) -> Rect

返回按给定偏移量移动后的新矩形。x和y参数可以是任何整数值,正数或负数。

move_ip()

功能:移动矩形(无返回)

属性:move_ip(x, y) -> None

与 Rect.move() 方法相同,但仅操作无返回副本。

inflate()

功能:增大或缩小矩形大小

属性:inflate(x, y) -> Rect

  1. 返回一个新矩形,其大小由给定的偏移量更改。矩形仍围绕其当前中心。
  2. 负值将缩小矩形。

注意,使用整数,如果给定的偏移量太小(<2>-2),则中心将关闭。

inflate_ip()

功能:增大或缩小矩形大小(无返回)

属性:inflate_ip(x, y) -> None

与 Rect.inflate() 方法相同,但仅操作无返回副本。

clamp()

功能:将矩形移到另一个矩形内

属性:clamp(Rect) -> Rect

返回一个新的矩形,该矩形被移动到参数Rect内。如果矩形太大而不能放在内部,它将在参数Rect内居中,但其大小不会更改。

clamp_ip()

功能:将矩形移到另一个矩形内(无返回)

属性:clamp_ip(Rect) -> None

与 Rect.clamp() 方法相同,但仅操作无返回副本。

clip()

功能:在另一个矩形内裁剪矩形

属性:clip(Rect) -> Rect

返回一个新矩形,该矩形被裁剪为完全位于参数矩形内。如果两个矩形开始时没有重叠,则返回一个0大小的矩形。

clipline()

功能:在矩形内裁剪一条线

属性:

  • clipline(x1, y1, x2, y2) -> ((cx1, cy1), (cx2, cy2))
  • clipline(x1, y1, x2, y2) -> ()
  • clipline((x1, y1), (x2, y2)) -> ((cx1, cy1), (cx2, cy2))
  • clipline((x1, y1), (x2, y2)) -> ()
  • clipline((x1, y1, x2, y2)) -> ((cx1, cy1), (cx2, cy2))
  • clipline((x1, y1, x2, y2)) -> ()
  • clipline(((x1, y1), (x2, y2))) -> ((cx1, cy1), (cx2, cy2))
  • clipline(((x1, y1), (x2, y2))) -> ()

返回裁剪为完全位于矩形内的直线的坐标。如果行与矩形不重叠,则返回空元组。

要裁剪的线可以用以下任何格式表示(可以使用浮点数但不能保证精度):

  • four ints
  • 2 lists/tuples/Vector2s of 2 ints
  • a list/tuple of four ints
  • a list/tuple of 2 lists/tuples/Vector2s of 2 ints
返回将给定行的坐标裁剪为完全在矩形内的元组返回,如果给定行与矩形不重叠,则返回空元组
返回类型tuple(tuple(int, int), tuple(int, int)) or ()
Raises:TypeError -- 如果该线坐标不是上述行格式之一

注意:

  1. 此方法可用于直线与直线之间的碰撞检测。参见下面的示例代码。
  2. 用于存储直角坐标的 pygame.Rect pygame对象的 rect.bottom 和 rect.right 属性始终位于其实际边界之外的一个像素处。

# Example using clipline().
clipped_line = rect.clipline(line)

if clipped_line:
# If clipped_line is not an empty tuple then the line
# collides/overlaps with the rect. The returned value contains
# the endpoints of the clipped line.
start, end = clipped_line
x1, y1 = start
x2, y2 = end
else:
print("No clipping. The line is fully outside the rect.")

New in pygame 2.0.0.

union()

功能:返回一个两个矩形合并后的矩形

属性:union(Rect) -> Rect

返回完全覆盖两个提供的矩形区域的新矩形。新矩形内可能有原始矩形未覆盖的区域。

union_ip()

功能:将两个矩形合并为一个(无返回)

属性:union_ip(Rect) -> None

与 Rect.union() 方法相同,但仅操作无返回副本。

unionall()

功能:返回一个矩形的并集

属性:unionall(Rect_sequence) -> Rect

unionall_ip()

功能:矩形的并集

属性:unionall_ip(Rect_sequence) -> None

与 Rect.unionall() 方法相同,但仅操作无返回副本。

fit()

功能:按纵横比调整矩形的大小或移动矩形

属性:fit(Rect) -> Rect

返回一个新矩形,该矩形被移动并调整大小以适应另一个矩形。保留原始矩形的纵横比,因此新矩形的宽度或高度可能小于目标矩形。

normalize()

功能:泛化矩形

属性:normalize() -> None

如果矩形的宽度或高度为负,则此操作将翻转矩形的宽度或高度。矩形将保持在同一位置,只交换边。

contains()

功能:测试一个矩形是否在另一个矩形内

属性:contains(Rect) -> bool

当参数完全在Rect内时返回true。

collidepoint()

功能:测试点是否在矩形内

属性:

  • collidepoint(x, y) -> bool
  • collidepoint((x,y)) -> bool
  1. 如果给定点位于矩形内,则返回true。
  2. 沿右边缘或下边缘的点不被视为位于矩形内。

注意:对于矩形和直线之间的碰撞检测,可以使用 clipline() 方法。

colliderect()

功能:测试两个矩形是否重叠

属性:colliderect(Rect) -> bool

如果矩形的任何部分重叠(除了顶部+底部或左侧+右侧边缘),则返回true。

注意:对于矩形和直线之间的碰撞检测,可以使用 clipline() 方法。

collidelist()

功能:测试一个矩形与列表中的矩形是否相交(intersect)

属性:collidelist(list) -> index

测试矩形是否与一系列矩形中的任何矩形碰撞。返回找到的第一个冲突的索引。如果未找到冲突,则返回索引-1。

collidelistall()

功能:测试列表中的所有矩形是否相交(intersect)

属性:collidelistall(list) -> indices

  1. 返回包含与矩形冲突的矩形的所有索引的列表。
  2. 如果未找到相交矩形,则返回空列表。

collidedict()

功能:测试字典中的一个矩形是否相交(intersect)

属性:

  • collidedict(dict) -> (key, value)
  • collidedict(dict) -> None
  • collidedict(dict, use_values=0) -> (key, value)
  • collidedict(dict, use_values=0) -> None
  1. 返回与调用的Rect对象相交的第一个键和值对。
  2. 如果未找到冲突,则不返回任何冲突。
  3. 如果use_values为0(默认值),则在碰撞检测中将使用dict的键,否则将使用dict的值。

注意:Rect对象不能用作字典中的键(它们不可散列),因此必须将它们转换为元组/列表。

e.g. rect.collidedict({tuple(key_rect) : value})

collidedictall()

功能:测试字典中的所有矩形是否相交(intersect)

属性:

  • collidedictall(dict) -> [(key, value), ...]
  • collidedictall(dict, use_values=0) -> [(key, value), ...]
  1. 返回与调用的Rect对象相交的所有键和值对的列表。
  2. 如果未找到冲突,则返回空列表。
  3. 如果use_values为0(默认值),则在碰撞检测中将使用dict的键,否则将使用dict的值。

注意:Rect对象不能用作字典中的键(它们不可散列),因此必须将它们转换为元组/列表。e.g. rect.collidedictall({tuple(key_rect) : value})

 

整理自:https://www.pygame.org/docs/ref/rect.html

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值