2016-08-13 36 views
1

新しいサーフェスをポップアップする前に、現在の画面を少し暗くしたいですか?私はこれを行うためにパイゲームには何の機能もないことを知っており、それを暗くするために画像を処理しなければならないだろう。しかし、私が知っている限り、現在のpygameで表面を表示する唯一の方法は、ゲームを遅くするファイルとしてディスクに保存することです。 pygameでこれを行うための他の方法はありますか?私はそれをどこかに保存せずに処理できるように、イメージをメモリ内の値に保存するようにします。事前にpygame-画面を暗くする方法

おかげで、

スタム

答えて

2

あなたは、ファイルには何も保存する必要はありません。 イメージをファイルに読み込むときは、Surfaceオブジェクトです。あなたは、このオブジェクトを画面にblitします。しかし、これらのSurfaceオブジェクトは、スクリーン(サーフェスでもあります)として機能するオブジェクトと同じメソッドとプロパティを持っています。プリミティブを描画し、他のイメージをメモリ内にblitできます。

一度イメージを読んだらコピーを作成し、その上に透明な透明な色の塗りつぶし矩形を描き、それを暗くして、それを画面にblitします。フェードインしたい場合は、透明度を上げて画面に貼り付けてください。

import pygame 
screen = pygame.display.set_mode((640,480)) 
img = pygame.image.load("MYIMAGE.PNG") 

for opacity in range(255, 0, -15): 
    work_img = img.copy() 
    pygame.draw.rect(work_img, (255,0, 0, opacity), (0,0, 640,480)) 
    screen.blit(work_img, (0,0)) 
    pygame.display.flip() 
    pygame.time.delay(100) 
+0

私は自分自身を明確にするdidntはおそらく、私は私のゲームがすでに画面にブリットたものを暗くしたい... –

+0

ああ、私はあなたのポイントを持って、すでにあるものを暗くすることに –

+0

を暗くなる、画面上の別の画像を描画透明な矩形を画面に描画するだけです。不透明度を表す4番目の「アルファ」成分を塗りつぶし色で渡します。 – jsbueno

関連する問題