43

誰かがpygameで透明な背景を持つサーフェスを作成するサンプルコードを教えてもらえますか?

4

3 に答える 3

47

これはそれを行う必要があります:

image = pygame.Surface([640,480], pygame.SRCALPHA, 32)
image = image.convert_alpha()

色深度(32)が明示的に設定されたままであることを確認してください。そうでない場合、これは機能しません。

于 2008-11-29T22:02:45.563 に答える
21

GIF ファイルの透明度と同じように、カラーキーを指定することもできます。これは、スプライトを作成する最も一般的な方法です。元のビットマップにはアートワークがあり、描画されない背景として特定の色があります。これがカラーキーです。

surf.set_colorkey((255,0,255)) // Sets the colorkey to that hideous purple

アルファの代わりにカラーキーを使用するサーフェスは、ブレンド計算を必要としないため、ブリットがはるかに高速です。SDL サーフェスは、カラーキーが設定されている場合、単純なビットマスクを使用します。これは実質的にオーバーヘッドなしでブリットします。

于 2008-12-09T18:24:22.127 に答える
3

3 つの可能性があります。

  • で透明色キーを設定するset_colorkey()

    カラー キーは、透明として扱われる色を指定します。たとえば、透明にする必要がある黒の背景を持つ画像がある場合は、黒のカラー キーを設定します。

    my_surface.set_colorkey((0, 0, 0))
    
  • 新しいサーフェスを作成するときに、追加機能を有効にすることができます。フラグを設定して、SRCALPHAピクセルごとのアルファを含むイメージ形式でサーフェスを作成します。ピクセルの初期値は (0, 0, 0, 0) です。

    my_surface = pygame.Surface((width, height), pygame.SRCALPHA)
    
  • ピクセルごとにアルファを提供するイメージ形式でSurfaceconvert_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))
    
于 2020-10-24T11:00:43.663 に答える