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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
python单元测试unittest实例详解
May 11 Python
高效使用Python字典的清单
Apr 04 Python
python字符串常用方法
Jun 14 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
Python获取网段内ping通IP的方法
Jan 31 Python
python 实现按对象传值
Dec 26 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
python开发前景如何
Jun 11 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 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
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
js实现轮播图特效
2020/05/28 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
一年级小学生评语
2014/04/22 职场文书
反对邪教标语
2014/06/30 职场文书
关键在于落实心得体会
2014/09/03 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
庆元旦演讲稿
2014/09/15 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
房产公证书样本
2015/01/23 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书