所以基本上我在设计漫画查看器的项目中使用了pygame。我已经能够加载图像,显示它,修改它的尺寸,但无法在调整大小时将其适合窗口。
到目前为止,我只是将图像拉伸到画布上,当我调整大小时,它会保持在原位,一切看起来都"故障"。这是我的消息来源:https://github.com/averyre/ComicSnake/blob/master/comicsnake.py
具体来说,此块:
## The GUI loop.
while 1:
screenWidth, screenHeight = screen.get_size();
pygame.event.wait()
screen.fill(black)
page = pygame.transform.scale(page,[screenWidth, screenHeight]);
screen.blit(page, pagerect)
pygame.display.flip()
任何帮助将不胜感激!
screen
是Surface
(内存中的缓冲区),它是在开始时创建的并且不会改变大小 - 它不是您调整大小的窗口。
当您调整窗口大小时,它会发送事件VIDEORESIZE
,其中包含字段event.size
,event.w
,event.h
并且是调整大小后的窗口大小。
查看文档:事件
来自pygame.org的wiki的示例代码:WindowRessize。
它演示如何使用VIDEORESIZE
调整screen
和图像的大小。
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500,500), HWSURFACE|DOUBLEBUF|RESIZABLE)
pic = pygame.image.load("example.png") #You need an example picture in the same folder as this file!
screen.blit(pygame.transform.scale(pic, (500,500)), (0,0))
pygame.display.flip()
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)
screen.blit(pygame.transform.scale(pic, event.dict['size']), (0,0))
pygame.display.flip()