使用 pygame 放大某个区域?

Zooming in on an area with pygame?

我昨天做了一个放大功能,作为对我将要开发的游戏的测试。看起来不错,但我更愿意只放大透过玻璃看到的区域。

有人知道如何使用 python/pygame 放大 动态 半径吗?我是否必须对我的图像进行 tileset 或使用某种密集层 blit 对其进行暴力破解?我不确定这是否是这里要问的问题。

这里有一个视频演示来展示我在说什么 - https://youtu.be/_pVyb0bns3k

我认为这里没有任何捷径。我建议像往常一样绘制未缩放的屏幕,在缩放区域中以圆圈形式绘制,然后在上方的放大镜中绘制。您显然已经知道如何做的第一位和最后一位,所以让我们看看缩放区域中的 blitting。

为此,我会

  • 将图片中要放大的部分作为一个正方形,复制到一个新的Surface中。 (请记住,这将小于结果区域。)
  • 使用pygame.transform.smoothscale将其扩大到足以覆盖整个放大镜区域
  • 使用蒙版将其从正方形变成圆形。有关详细信息,请参阅 Pygame - is there any way to only blit or update in a mask
  • Blit 结果。

不要太担心性能。你每帧只做一次。