Rat*_*ial 4 python pygame surface blit resizable
如果我将pygame窗口设置为可调整大小,然后单击并拖动窗口的边框,窗口将变大,但表面上的任何blit都不会随之变大.(这是可以理解的)我怎么做到这样,当我调整窗口大小时,所有blit对象调整大小并正确填充窗口?
例如:假设我有一个200 x 200的窗口,我在window_width/2和window_height/2处按下了一个按钮.按钮将位于窗口的中心,为100 x 100.现在,如果我将窗口调整为300 x 300,则按钮将保持为100 x 100而不是150 x 150.
我试过搞乱pygame.Surface.get_width等,但没有运气.基本上我正在尝试调整程序窗口的大小,并使所有blit图像保持成比例.
不要直接在屏幕上绘图,而是在另一个表面上绘图.然后将其他表面缩放到屏幕大小并在屏幕上显示它.
这是一个简单的例子:
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((200, 200),HWSURFACE|DOUBLEBUF|RESIZABLE)
fake_screen = screen.copy()
pic = pygame.surface.Surface((50, 50))
pic.fill((255, 100, 200))
while True:
pygame.event.pump()
event = pygame.event.wait()
if event.type == QUIT: pygame.display.quit()
elif event.type == VIDEORESIZE:
screen = pygame.display.set_mode(event.dict['size'], HWSURFACE|DOUBLEBUF|RESIZABLE)
fake_screen.blit(pic, (100, 100))
screen.blit(pygame.transform.scale(fake_screen, event.dict['size']), (0, 0))
pygame.display.flip()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4379 次 |
| 最近记录: |