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 排列组合之itertools
Mar 20 Python
跟老齐学Python之有容乃大的list(3)
Sep 15 Python
python基于ID3思想的决策树
Jan 03 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
Python 查找字符在字符串中的位置实例
May 02 Python
Windows下python3.7安装教程
Jul 31 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
用python打印菱形的实操方法和代码
Jun 25 Python
python3.7简单的爬虫实例详解
Jul 08 Python
python实现自动清理文件夹旧文件
May 10 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
js省市区级联查询(插件版&无插件版)
2017/03/21 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python tkinter窗口最大化的实现
2019/07/15 Python
django中间键重定向实例方法
2019/11/10 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
python openssl模块安装及用法
2020/12/06 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
2014年行政工作总结
2014/11/19 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
公司管理制度范本
2015/08/03 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书