pygame
プロジェクトの画像のサイズを画面の解像度に合わせてどのように拡大するかを考えていました。たとえば、当面はウィンドウ表示モードを想定した次のシナリオを想定してください。全画面は同じだと思います:
もちろん1600x900
ウィンドウにネイティブに表示される1600x900
背景画像があります
1280x720
ウィンドウでは、明らかにこの画像のrectを1280x720
にスケーリングできます
ただし、元の300x300 px
背景に合うサイズのx,y 1440,860
(サイズの例)に1600x900
画像を追加する必要がある場合はどうなりますか?もちろん1600x900
の場合、画像をネイティブで使用できますが、ウィンドウサイズが小さい/大きい場合はどうでしょうか。
基本的に、ウィンドウサイズに合わせて画像を拡大縮小し、それに応じて画像を配置するにはどうすればよいですか?本当に簡単な自動化された方法があるに違いないと思いますが、今はそれを理解できず、率直に言って検索する時間がありません...
事前に感謝します、Ilmiont
pygame.transform.scale
で画像をスケーリングできます:
import pygame
picture = pygame.image.load(filename)
picture = pygame.transform.scale(picture, (1280, 720))
次に、picture
の境界矩形を取得できます
rect = picture.get_rect()
と画像を移動します
rect = rect.move((x, y))
screen.blit(picture, rect)
screen
は次のように設定されました
screen = pygame.display.set_mode((1600, 900))
ウィジェットをさまざまな画面サイズに調整できるようにするには、 ディスプレイのサイズを変更可能 :
import os
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500, 500), HWSURFACE | DOUBLEBUF | RESIZABLE)
pic = pygame.image.load("image.png")
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()
1600x900を1280x720にスケーリングすると、
scale_x = 1280.0/1600
scale_y = 720.0/900
それを使用してボタンのサイズとボタンの位置を見つけることができます
button_width = 300 * scale_x
button_height = 300 * scale_y
button_x = 1440 * scale_x
button_y = 860 * scale_y
1280x720を1600x900にスケーリングすると、
scale_x = 1600.0/1280
scale_y = 900.0/720
残りは同じです。
私は追加します .0
を作成する値にfloat
-そうでない場合はscale_x
、scale_y
はinteger
に丸められます-この例では0
(ゼロ)(Python 2.x)