如何解决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 举报,一经查实,本站将立刻删除。