2016-01-20 54 views
3

如果我將pygame窗口設置爲可調整大小,然後單擊並拖動窗口的邊框,窗口將變大,但表面上沒有任何blit會隨着它變大。 (這是可以理解的)我怎樣才能做到這一點,當我調整一個窗口的大小時,所有的窗口對象都會調整窗口大小並正確地填充窗口?Pygame。如何調整曲面大小並使所有對象與新窗口大小成比例?

例如:假設我有一個200 x 200的窗口,並在window_width/2和window_height/2處blit一個按鈕。該按鈕將在窗口的中心100 x 100.現在,如果我調整窗口的大小爲300 x 300,按鈕保持在100 x 100而不是150 x 150.

我試着用pygame搞亂.Surface .get_width等,但沒有運氣。 基本上我試圖調整一個程序的窗口,並讓所有的圖像保持相稱的圖像。

回答

4

不要直接在屏幕上畫畫,而要在另一個表面上畫畫。然後將其他表面縮放至屏幕大小並將其粘貼在屏幕上。

這裏有一個簡單的例子:

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()