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))
我正在写一个程序,我想放大和缩小光标所在的位置。
我已经尝试(也许是愚蠢地)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))