嗨,我想在pygame中设置非矩形剪贴区域(在本例中为字符“P”),在该区域中将受到严格限制,并在其中绘制其他对象。
有什么选择吗?
多谢
最佳答案
让我们看看我是否正确理解了您的问题:您想将图像“白化”到表面上,但要通过 mask 来实现,该 mask 只允许光源中的某些像素实际最终出现在表面上?
我遇到了这个精确的问题,起初我认为这只能通过PIL来实现。然而,经过一些阅读和试验,事实证明,实际上可以借助pygame相当晦涩的“特殊标志”来完成此操作。下面是一个函数,它可以完成您想要的操作。
def blit_mask(source, dest, destpos, mask, maskrect):
"""
Blit an source image to the dest surface, at destpos, with a mask, using
only the maskrect part of the mask.
"""
tmp = source.copy()
tmp.blit(mask, maskrect.topleft, maskrect, special_flags=pygame.BLEND_RGBA_MULT)
dest.blit(tmp, destpos, dest.get_rect().clip(maskrect))
如果希望蒙版透明,则蒙版应为白色,否则应为黑色。
关于python - Pygame:如何在非矩形裁剪区域中绘制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5940935/