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网络编程学习笔记(10):webpy框架
Jun 09 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
Python导入模块时遇到的错误分析
Aug 30 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
Python常用扩展插件使用教程解析
Nov 02 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
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php抓取https的内容的代码
2010/04/06 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
javascript this详细介绍
2016/09/19 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
浅析python继承与多重继承
2018/09/13 Python
python获取本机所有IP地址的方法
2018/12/26 Python
Python实现FM算法解析
2019/06/18 Python
Python使用re模块验证危险字符
2020/05/21 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
恶意软件的定义
2014/11/12 面试题
vue实现倒计时功能
2021/03/24 Vue.js
秋收起义观后感
2015/06/11 职场文书
高中政治教师教学反思
2016/02/23 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python