Pygame Rect区域位置的使用(图文)
作者:zx 发布时间:2023-08-14 05:27:48
Rect(rectangle)指的是矩形,或者长方形,在 Pygame 中我们使用 Rect() 方法来创建一个指定位置,大小的矩形区域。函数的语法格式如下:
rect =pygame.Rect(left,top,width,height)
Rect 表示的区域必须位于一个 Surface 对象之上,比如游戏的主窗口(screen)。上述方法由四个关键参数值构成,分别是 left、top、width、height,为了方便大家理解这些距离的含义,下面给出了一张示意图:
注意:在 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()
程序的运行结果如下:
图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))。
来源:http://c.biancheng.net/pygame/rect.html
猜你喜欢
- 摘要:SELECT 语句可以帮助我们从MySQL中取出数据。SELECT 大概是 SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它
- 在这种配置下我们要实现关键词不区分大小写搜索并高亮显示要借助ASP的正则处理了,请看下面代码:<% Function&nbs
- 方案一:利用selenium+phantomjs * 面浏览器的形式访问网站,再获取cookie值:from selenium import
- 之前一直在windows环境使用pycharm加上virtualenv方式开发,最近由于本地多个virtualenv比较混乱,所以尝试切换a
- 前言因为写好了测试xmind脑图后,然后再编写测试用例,实在是太麻烦了,所以我写了一点测试用例后,就网上百度了下,怎么直接把xmind脑图转
- HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJAX请求即可与服务器端对话。今天彬Go将让大家通过Php环境的服
- 代码如下:using System; using System.Data; using System.Configuration; usin
- 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都
- 在OOCSS中怎么定义“对象”?对象类似JAVA中的类,保持着OO的特征。一个CSS对象由4部分组成:可能是一个或多个DOM节点的HTML由
- Python处理json字符串中的非法双引号工作中数据清洗时遇到以下情况:a = '{"地区": "湖
- 1、shutdown normal 正常方式关闭数据库。 2、shutdown imme
- 前言python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符
- 如何动态添加单元格!! 用insertRow()和insertCell()方法 其用法如下: insertRow() v
- jscript 5.7 发布修复了不少ie javascript内存泄露的问题。但是leak依然存在。当我们频繁使用 setInterval
- PHP levenshtein() 函数实例计算两个字符串之间的 Levenshtein 距离:<?php echo levensht
- 动画效果如下:GIF看起来可能会有点卡wxml<view class="confirm bubble">确定
- 一. Python 的类和实例在面向对象中,最重要的概念就是类(class)和实例(instance),类是抽象的模板,而实例是根据类创建出
- wlile循环while True表示永远为真,不管是什么条件都会向下执行,下面是写的一个例子。#!/usr/bin/env pythona
- Hi, 大家好~ 好久没有发有营养的东西,今天就扔一篇最近热点的Google Chrome 浏览器的试用心得吧。先说个比较搞的事情,Goog
- 最近有个功能需要java与python之间的数据交互,java需要把参数传给python,然后python计算的结果返回给java.于是就写