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的Django框架中获取单个对象数据的简单方法
Jul 17 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Python实现自动登录百度空间的方法
Jun 10 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
python调用外部程序的实操步骤
Mar 04 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
python数字类型和占位符详情
Mar 13 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
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
理解python正则表达式
2016/01/15 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
Python实现注册登录系统
2017/08/08 Python
使用requests库制作Python爬虫
2018/03/25 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
python和opencv实现抠图
2018/07/18 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
25道Java面试题集合
2013/05/21 面试题
营业员个人总结的自我评价
2013/10/25 职场文书
大学军训感言1500字
2014/03/09 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
最美护士演讲稿
2014/08/27 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
导游词之无锡梅园
2019/11/28 职场文书