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下载FTP上的文件夹的实现代码
Feb 10 Python
Python的Flask框架与数据库连接的教程
Apr 20 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
深入学习python多线程与GIL
Aug 26 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
python3 re返回形式总结
Nov 20 Python
python 破解加密zip文件的密码
Apr 22 Python
使用python向MongoDB插入时间字段的操作
May 18 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jquery foreach使用示例
2013/09/12 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
2016/05/29 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python excel转换csv代码实例
2019/08/26 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
含预算的公司户外活动方案
2014/08/16 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
高中信息技术教学反思
2016/02/16 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS