在pygame中使图像“适合屏幕”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在pygame中使图像“适合屏幕”?相关的知识,希望对你有一定的参考价值。

所以基本上我在一个项目中使用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()

任何帮助将不胜感激!

答案

screenSurface(内存中的缓冲区),它在开始时创建并且不会改变大小 - 它不是您调整大小的窗口。

当您调整窗口大小时,它会发送事件VIDEORESIZE,其中包含字段event.sizeevent.wevent.h,并且在调整大小后它是窗口的大小。

见doc:event

示例代码来自pygame.org的wiki:WindowResizing。 它展示了如何使用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()

以上是关于在pygame中使图像“适合屏幕”?的主要内容,如果未能解决你的问题,请参考以下文章

壁纸不适合设备屏幕

react native android背景图像不适合屏幕

图像格式不支持 PyGame

如何在图像视图中将图像设置为适合屏幕

有没有办法在nodejs pdfkit中使一行中的文本片段变为粗体?

使网站背景图像适合屏幕大小