2016-10-08 163 views
0

画像の背景をPygameスクリプトで作ろうとしています。私のゲームの背景は透明ではなく黒です。私はconvert_alphaを使うことができる他の場所を読んだが、うまくいかないようだ。私は間違って何をやっている画像の背景をconvert_alphaでPygameで透明にします

import PIL 
gameDisplay = pygame.display.set_mode((display_width, display_height)) 
img = pygame.image.load('snakehead1.bmp').convert_alpha(gameDisplay) 

:ここ

は私のコード(の関連部分)のですか?前もって感謝します!

+0

'convert_alpha' *画像にアルファ成分を追加するので透明にすることができますが、それ自体ではありません。あなたはこれをどこで読んだのですか?後で何かできましたか? – usr2564301

答えて

1

画像を透明にするには、まずアルファ値の画像が必要です。この基準を満たしていることを確認してください!私はbmpとして保存するとき、私の画像はアルファ値を保存しないことに気づいた。明らかに、the bmp format do not have native transparency support

アルファベットが含まれている場合メソッドconvert_alpha()を使用して、ピクセルごとのアルファを使用してサーフェスを返すことができます。このメソッドには何も渡す必要はありません。引数が与えられていなければthe new surface will be optimized for blitting to the current display。ここで

はこれを示すサンプルコードです:

import pygame 
pygame.init() 

screen = pygame.display.set_mode((100, 100)) 
image = pygame.image.load("temp.png").convert_alpha() 

while True: 
    screen.fill((255, 255, 255)) 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      quit() 

    screen.blit(image, (0, 0)) 
    pygame.display.update() 

そして、私のイメージ("temp.png"):

enter image description here

それがアルファが含まれていない場合2つの簡単な修正です。

  1. イメージをpngのように別のファイル形式で保存します。
  2. カラーキーを使用してください。これは、バックグラウンドを削除する必要がある場合にのみ機能します。コードimage.set_colorkey((0, 0, 0))を置くのと同じくらい簡単で、すべての黒色を透明にします。
関連する問題