誰かがpygameで透明な背景を持つサーフェスを作成するサンプルコードを教えてもらえますか?
3 に答える
これはそれを行う必要があります:
image = pygame.Surface([640,480], pygame.SRCALPHA, 32)
image = image.convert_alpha()
色深度(32)が明示的に設定されたままであることを確認してください。そうでない場合、これは機能しません。
GIF ファイルの透明度と同じように、カラーキーを指定することもできます。これは、スプライトを作成する最も一般的な方法です。元のビットマップにはアートワークがあり、描画されない背景として特定の色があります。これがカラーキーです。
surf.set_colorkey((255,0,255)) // Sets the colorkey to that hideous purple
アルファの代わりにカラーキーを使用するサーフェスは、ブレンド計算を必要としないため、ブリットがはるかに高速です。SDL サーフェスは、カラーキーが設定されている場合、単純なビットマスクを使用します。これは実質的にオーバーヘッドなしでブリットします。
3 つの可能性があります。
で透明色キーを設定する
set_colorkey()
カラー キーは、透明として扱われる色を指定します。たとえば、透明にする必要がある黒の背景を持つ画像がある場合は、黒のカラー キーを設定します。
my_surface.set_colorkey((0, 0, 0))
新しいサーフェスを作成するときに、追加機能を有効にすることができます。フラグを設定して、
SRCALPHA
ピクセルごとのアルファを含むイメージ形式でサーフェスを作成します。ピクセルの初期値は (0, 0, 0, 0) です。my_surface = pygame.Surface((width, height), pygame.SRCALPHA)
ピクセルごとにアルファを提供するイメージ形式でSurface
convert_alpha()
のコピーを作成するために使用します。ただし、新しいサーフェスを作成して を使用する
convert_alpha()
場合、アルファ チャネルは最初は最大に設定されます。ピクセルの初期値は (0, 0, 0, 255) です。表面に何かを描画する前に、表面全体を透明な色で塗りつぶす必要があります。my_surface = pygame.Surface((width, height)) my_surface = my_surface.convert_alpha() my_surface.fill((0, 0, 0, 0))