gpt4 book ai didi

python - pygame.transform.scale 在 "game"表面上不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 20:48:37 24 4
gpt4 key购买 nike

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

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

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,则窗口上需要缩放的区域为窗口宽度和高度的一半:

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_surf = pygame.Surface(zoom_area.size)
zoom_surf.blit(screen, (0, 0), zoom_area)

pygame.transform.scale() 缩放 zoom_surfpygame.transform.smoothscale() :

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

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

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

关于python - pygame.transform.scale 在 "game"表面上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56407891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com