【发布时间】:2022-11-09 06:01:16
【问题描述】:
我正在制作一个棋盘游戏,其中棋盘是 100x100,非常大,我注意到我只能显示大约 10x10,然后它变得太小而看不到,所以为了解决这个问题,我想实现一个放大/缩小功能,因此您可以看到整个电路板。
首先,我有一个 screen 变量。它是这样定义的:
screen_width = 750
screen_height = 550
screen = p.display.set_mode((screen_width, screen_height))
# -- and in the main game loop:
screen.fill((255, 255, 255))
all_sprites.draw(screen)
buttons_group.draw(screen)
options_group.draw(screen)
为了能够只调整电路板的大小而不调整它周围的任何东西,我创建了一个board 表面,以便我可以随意调整它的大小。我这样创建它:
board_width = 420
board_height = 420
board = p.Surface((board_width, board_height))
# -- and in the main game loop:
board.fill((255, 255, 255))
p.transform.scale(board, (board.get_width()+zoom, board.get_height()+zoom))
zoom = 0
grid_slots.draw(board)
available_slots_group.draw(board)
items_group.draw(board)
screen.blit(board, ((280, 90), (700, 510)))
zoom 变量是我根据鼠标滚轮递增和递减的变量。
但是现在缩放不起作用。即使缩放值发生变化,板也不会变大或变小。
我让表面完全“调整大小”,如下所示:它被切断了,没有任何东西变大或变小,而是表面的“窗口”正在缩小。我不记得我是怎么做到的,但这仍然不是我想做的。
所以问题是:如何放大表面中的内容,并且该表面位于screen 表面中?所以表面并没有变大并超过整个屏幕,而是它里面的东西会变大或变小。
【问题讨论】:
标签: python pygame zooming surface