pygame.transform.scale在“游戏”界面上不起作用

时间:2019-06-01 15:11:42

标签: python python-3.x pygame zoom

我正在编写程序,并且想要放大和缩小光标所在的位置。

我已经尝试过(也许是愚蠢的)pygame.transform.scale2x窗口(基本上是游戏的整个窗口,所以:

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

还有其他解决方案吗? pygame.transform.scale2x有什么问题(我认为pygame.transform仅用于图像,所以如何在表面上使用它?)? 如果解决方案不包括更改pygame.draw方法的所有坐标,那将是很好的,因为我的程序中有很多坐标。 预先感谢!

1 个答案:

答案 0 :(得分:0)

  

我想放大和缩小光标所在的位置。

定义缩放系数并计算缩放区域的大小。例如如果缩放系数是,则必须缩放到窗口的区域的长度和宽度是窗口的一半:

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,并使用,blit将窗口的区域复制到表面,其中area参数设置为zoom地区:

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

pygame.transform.scale()pygame.transform.smoothscale()缩放zoom_surf

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

现在zoom_surf与窗口的大小相同。 .blit到窗口的表面:

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