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中executemany和序列的使用方法
Aug 12 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
python设定并获取socket超时时间的方法
Jan 12 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
Python 实现交换矩阵的行示例
Jun 26 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
详解python中docx库的安装过程
Nov 08 Python
python scatter函数用法实例详解
Feb 11 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
python实现ping命令小程序
Dec 28 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
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
使用python实现生成用户信息
2017/03/20 Python
深入理解Python3 内置函数大全
2017/11/23 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
园林技术个人的自我评价
2014/01/08 职场文书
户籍证明格式
2014/09/15 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
教师节老师寄语
2015/05/28 职场文书
新党员入党决心书
2015/09/22 职场文书
保险公司增员口号
2015/12/25 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
Redis全局ID生成器的实现
2022/06/05 Redis
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL