Pygame Rect区域位置的使用(图文)


Posted in Python onNovember 17, 2021

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('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()

程序的运行结果如下:

Pygame Rect区域位置的使用(图文)

图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))。

到此这篇关于Pygame Rect区域位置的使用(图文)的文章就介绍到这了,更多相关Pygame Rect区域位置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python连接mssql数据库编码问题解决方法
Jan 01 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
Python之os操作方法(详解)
Jun 15 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
Python实现自动发送邮件功能
Mar 02 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
详解python调用cmd命令三种方法
Jul 08 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
Feb 01 Python
分析Python list操作为什么会错误
Nov 17 #Python
深入理解Pytorch微调torchvision模型
Nov 11 #Python
Python 中 Shutil 模块详情
Nov 11 #Python
django 认证类配置实现
Nov 11 #Python
Python Pandas数据分析之iloc和loc的用法详解
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
You might like
php目录拷贝实现方法
2015/07/10 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
web 页面分页打印的实现
2009/06/22 Javascript
ExtJS 入门
2010/10/29 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript检测上传文件大小的方法
2015/07/22 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
详解用python实现简单的遗传算法
2018/01/02 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
python实现大量图片重命名
2020/03/23 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
接口可以包含哪些成员
2012/09/30 面试题
库房管理员岗位职责
2014/03/09 职场文书
迎新晚会主持词
2014/03/24 职场文书
食品安全标语
2014/06/07 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
家长会感言
2015/08/01 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫