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代码实现ID3决策树算法
Dec 20 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
实例讲解python中的协程
Oct 08 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
django admin组件使用方法详解
Jul 19 Python
python程序 创建多线程过程详解
Sep 23 Python
在python中logger setlevel没有生效的解决
Feb 21 Python
如何使用python切换hosts文件
Apr 29 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 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语法(5)
2006/10/09 PHP
discuz Passport 通行证 整合笔记
2008/06/30 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python回调函数用法实例详解
2015/07/02 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
数控专业自荐书范文
2014/03/16 职场文书
索赔员岗位职责
2015/02/15 职场文书
2015年计划生育责任书
2015/05/08 职场文书
毕业论文致谢词
2015/05/14 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang