2017-12-26 9 views
1

基本的には、私が漫画本のビューアをデザインしているプロジェクトでは、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() 

任意の助けいただければ幸いです!

答えて

1

screenは、開始時に作成され、サイズを変更しないで、サイズを変更するウィンドウではありません。

ウィンドウのサイズを変更すると、それがあるフィールドevent.sizeを持っているイベントVIDEORESIZEevent.wevent.hを送り、それはリサイズ後のウィンドウのサイズです。

参照ドキュメント:WindowResizing:pygame.orgのウィキからevent

サンプルコード。
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() 
+0

申し訳ありませんが、私はこれを自分のコードに組み込む際に問題があります。私は "終了"イベントの種類とその機能を理解していますが、ウィンドウに基づいて画像のサイズを変更することはできません。同様のものを再現しようとすると、同じ問題が発生します。 – AveryRe

+0

'QUIT'イベントは重要ではありません - ウィンドウサイズを取得し、' screen'を作り直して画像サイズを変更するには 'VIDEORESIZE'を使う必要があります。 'while True'から' while'loopにすべてのコードを異なる変数でコピーすることができます。 – furas

関連する問題