1

私はいくつかの実験にこのスプライトを使用しています。シートの一部をGIMPでトリミングし、青い背景を透明にしました。その結果、これができました。ただし、このスプライトを使用してコードを実行すると、背景が青色のスプライトになります。他のスプライトでも同じことが起こります(異なるスプライトシート、同じソース、同じ編集プロセス)。

これで、PyGame自体を使用して透明色を設定できることはわかっていますが、それが唯一の方法であるかどうか疑問に思っています。画像自体でできませんか?GIMPでクリアした後でも、PyGameが青いバックグラウンドを読み取るのはなぜですか?

PS SSCEは、GitHubレポにリンクされているか、pvz_shooter_test.pyまたはリンクされています。image_test.py

4

2 に答える 2

1

mySurface.convert_alpha() を試してください (それについてはpygame のドキュメントを確認してください)。

于 2012-07-17T10:24:07.880 に答える
0

GIMPでクリアした後でも、PyGameがまだ青い背景を読み取っている理由について、もう少し詳しく説明します。

画像ファイル形式がサポートしている場合、ピクセルは RGB ビットで表されるだけではありません。すべてのピクセル、アルファチャネルに関する追加情報があります。GIMP が行ったことは、アルファ ビットを不透明度 0% に設定することです。RGB 値はそのままです (この例では青)。私の PyGame コードは追加のアルファ ビットを読み取るように設定されていないため、青を表す RGB のみを読み取ります。このconvert_alphaメソッドは、PyGame にアルファ チャネルも読み取るように指示しました。

于 2013-11-02T08:40:14.387 に答える