pygame:屏蔽非图像类型的表面
Posted
技术标签:
【中文标题】pygame:屏蔽非图像类型的表面【英文标题】:pygame: mask non-image type surfaces 【发布时间】:2020-12-26 11:23:17 【问题描述】:我知道如何屏蔽图像。但是,如果我只是想创建一个圆圈并对其进行遮罩,那么在我的代码之外创建一个简单圆圈的图像会很烦人,尤其是当我需要创建不同类型的圆圈时。显然,您可以在 pygame 中创建 Rect 对象,但没有类 Circle。
pygame.mask.from_surface
需要 surface
。我可以将非图像类型的表面作为参数传递吗?如果是这样,我该如何掩盖圆圈和/或其他对象?
这是我想象的显然会引发错误的东西:
circle = pygame.Circle((10, 10), 5) # (center coordinates), radius
pygame.mask.from_surface(circle)
【问题讨论】:
【参考方案1】:无法直接创建圆形蒙版。见pygame.mask
。您需要在Surface 上画一个圆圈。创建一个创建Surface的函数并在Surface上画一个圆:
def circleSurface(color, radius):
shape_surf = pygame.Surface((radius * 2, radius * 2), pygame.SRCALPHA)
pygame.draw.circle(shape_surf, color, (radius, radius), radius)
return shape_surf
从Surface创建Mask:
circle = circleSurface((255, 255, 255), 5) # (center coordinates), radius
pygame.mask.from_surface(circle)
但是,如果您想使用圆圈来裁剪显示区域,请参阅以下问题的答案:
how to make circular surface in PyGame
How to fill only certain circular parts of the window in PyGame?
【讨论】:
我喜欢您将工作演示与链接放在一起的方式。以上是关于pygame:屏蔽非图像类型的表面的主要内容,如果未能解决你的问题,请参考以下文章
Python碰撞使用pygame检测图像(图像类型:png)