python - 从 pygame 界面检索图像
问题描述
我正在使用pygame构建一个屏幕来创建一个网格界面(3 * 3),如下所示:
screen = pg.display.set_mode((width, height + 100), 0, 32)
之后,我将图像粘贴到网格的 9 个可用点中的每一个,坐标posy
和posx
网格上的参数如下所示:
screen.blit(img, (posy, posx))
有没有办法检索每个粘贴的图像?进一步处理图像的返回类型是什么?
编辑:你的意思是这样存储状态?
class Cell :
image = ''
posX = 0
posY = 0
谢谢你。
解决方案
如果您想问是否:在 9 幅图像被blit()
编辑到之后,screen
您是否可以稍后以某种方式询问每个区域的screen
哪些图像被blit()
编辑,那么不会。这screen
只是一堆被blit()
s 设置为特定值的像素。它不知道这些值是从哪里来的。
你必须自己跟踪。我建议创建一个单元格对象,其中 9 个实例构成您的网格,并保留网格中 9 个区域中的每一个的状态,包括该区域的图像。您可能会发现子类化Sprite
很有用。
编辑:
例如,您可以为Cell
:
class Cell():
def __init__(self, pos, image, row, column):
self.image = image
self.rect = pygame.Rect(pos, image.get_size())
self.row = row
self.column = column
或者如果你以后想用它做更多的事情(我不会在这里包括),你可能想像这样子类化 Sprite:
class Cell(pygame.sprite.Sprite):
def __init__(self, pos, image, row, column):
super().__init__()
self.image = image
self.rect = pygame.Rect(pos, image.get_size())
self.row = row
self.column = column
在任何一种情况下,您都可能会向类添加更多内容,但在第一个示例中,即使这种有限的方式也允许您将每个实例的所有状态信息保存在一起。使用只有 the__init__()
而没有其他方法的类有点像 C 中的结构,它允许您组织和构造数据。
推荐阅读
- java - 如何在拦截器中获取控制器类名以进行日志记录
- access-token - Azure API 管理 - 如何刷新访问令牌后端 API?
- php - 无法从 XAMPP PHP 运行 Python 脚本
- perl - Perl - 需要明确的包名
- performance - 在 Torch 中计算频域卷积的更快替代方案
- python-3.x - 计算一个组合在日志中使用的次数
- python - 如何在 Django Rest Framework ViewSet 中使用 Last-Modified 标头?
- python - 如何从 AWS Lambda 提供 GIF、JPEG 和 PNG
- python-3.x - 告诉我如何通过 QUERY 从树莓派访问 OracleDB
- python - Image.fromarray() 正在制作 256 的矩阵 mod 中的每个元素