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批量导出导入MySQL用户的方法
Nov 15 Python
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python对象销毁实例(垃圾回收)
Jan 16 Python
python的Jenkins接口调用方式
May 12 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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/03/16 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python实现发送和获取手机短信验证码
2016/01/15 Python
Python实现正整数分解质因数操作示例
2018/08/01 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
实习医生自我评价
2013/09/22 职场文书
给校长的建议书400字
2014/05/15 职场文书
生物学专业求职信
2014/07/23 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
高中地理教学反思
2016/02/19 职场文书
七年级语文教学反思
2016/03/03 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技