pygame.transform.scale 不适用于 "game" 表面

pygame.transform.scale does not work on the "game" surface

我正在写一个程序,我想放大和缩小光标所在的位置。

我已经尝试(也许是愚蠢地)pygame.transform.scale2x window(这基本上是我在游戏中的全部 window 所以:

window = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
pygame.transform.scale2x(window)

)

还有其他解决办法吗?我对 pygame.transform.scale2x 做错了什么(我认为 pygame.transform 仅用于图像,所以我如何在表面上使用它?)? 如果解决方案不包括更改 pygame.draw 方法的所有坐标,那就太好了,因为我的程序中有很多。 提前致谢!

I want to zoom in and out where the cursor is positioned.

定义缩放系数并计算缩放区域的大小。例如如果缩放系数为2,则window上需要缩放的区域为window宽高的一半:

zoom = 2

wnd_w, wnd_h = window.get_size()
zoom_size = (round(wnd_w/zoom), round(wnd_h/zoom))

定义矩形缩放区域。该区域的中心点是缩放到的位置。 (例如光标位置):

zoom_area = pygame.Rect(0, 0, *zoom_size)
zoom_area.center = (pos_x, pos_y)

新建一个pygame.Surface with the size of the zoom area and copy the region of the window to the surface, by using ,blit,其中area参数设置为缩放区域:

zoom_surf = pygame.Surface(zoom_area.size)
zoom_surf.blit(screen, (0, 0), zoom_area)

pygame.transform.scale() or pygame.transform.smoothscale():

缩放 zoom_surf
zoom_surf = pygame.transform.scale(zoom_surf, (wnd_w, wnd_h))

现在 zoom_surf 与 window 大小相同。 .blit表面到window:

window.blit(zoom_surf, (0, 0))