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 正则表达式实现计算器功能
Apr 29 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
Python实现合并两个列表的方法分析
May 28 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
numpy.linspace函数具体使用详解
May 27 Python
python提取log文件内容并画出图表
Jul 08 Python
用django设置session过期时间的方法解析
Aug 05 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
解决reload(sys)后print失效的问题
Apr 25 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
jQuery使用方法
2017/02/04 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
简单实现python进度条脚本
2017/12/18 Python
深入浅析python with语句简介
2018/04/11 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python @property及getter setter原理详解
2020/03/31 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
pandas参数设置的实用小技巧
2020/08/23 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
升学宴演讲稿
2014/09/01 职场文书
2014年销售部工作总结
2014/12/01 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
办公用品质量保证书
2015/05/11 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers