微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame:创建一个不能修改父图像但可以被父图像修改的次表面

如何解决Pygame:创建一个不能修改父图像但可以被父图像修改的次表面

我正在尝试创建另一个表面的子表面,但仅由父 -> 子侧链接

如果我们想修改父表面,它应该具有子表面的属性:子表面也应该被修改。 但是,如果我们要修改子表面,它应该具有副本的属性:应该修改父表面。

例如:

#1 step : all the "subsurfaces" are created from "myimage"
parent = ('myimage.png')
child = parent.subsurface((32,96,32,32))
prop = parent.subsurface((0,32))
child.blit(prop_to_blit,(0,0))

#2 step : the parent image is modified
parent.blit('otherimage.png')

在第一步结束时,子表面应该看起来像 child+prop 但父表面应该保持完整。

在第二步结束时,父被修改,所有子表面也应该被修改

为了让我的程序正常工作,我需要将另一个图像 blit 到父图像上(因此具有具有这些属性的“次表面”功能)。 我已经尝试过此解决方案的替代方案,所有这些都需要通过变量赋值直接修改父图像,然后重新加载文件。但由于循环模块调用而无法工作

提前致谢!

解决方法

次表面与源表面共享像素。因此,表面不可能在一个方向上共享像素,而在另一个方向上不共享。但是,您可以随时copy()表面
所以你必须做出决定。您要与像素共享或要复制像素。 copy 其上的第 2 个次表面和 blit 的第 2 个次表面:

child = parent.subsurface((32,96,32,32)).copy()
prop = parent.subsurface((0,32))
child.blit(prop_to_blit,(0,0))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。