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 fileinput模块使用介绍
Nov 30 Python
Python import自定义模块方法
Feb 12 Python
Python中使用摄像头实现简单的延时摄影技术
Mar 27 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
用于ETL的Python数据转换工具详解
Jul 21 Python
基于python实现操作git过程代码解析
Jul 27 Python
python3爬虫中引用Queue的实例讲解
Nov 24 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
是否存在第一台收音机的说法
2021/03/01 无线电
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
js 调整select 位置的函数
2008/02/21 Javascript
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
vue 递归组件的简单使用示例
2021/01/14 Vue.js
Python的多维空数组赋值方法
2018/04/13 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Python实现ATM系统
2020/02/17 Python
python如何变换环境
2020/07/21 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
2014幼儿园大班工作总结
2014/11/10 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
公证书格式
2015/01/23 职场文书
蓬莱阁导游词
2015/02/04 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
毕业班工作总结
2015/08/10 职场文书
德劲DE1102数字调谐收音机机评
2022/04/07 无线电