を呼び出すとmyIndexedSurface.get_palette()
、32 ビット RGBA 値のリストが返されます。アルファ値が含まれているため、透明効果を伴うパレット インデックスを設定して使用することもできるのではないかと考えました。これらのサーフェスは、フル深度 (32 ビット) のピクセル データを持つサーフェスよりも効率的にオーバーレイまたはマスクとしてブリットできます。
ただし、これまでのところ、パレット要素のアルファ値はロックされているようで255
、私が試した方法では変更されません。
.set_palette_at(idx, (r,g,b,A))
r
、g
、および を正しく設定しますが、 の値b
に関係なく、アルファ値を 255 のままにしA
ます。.set_palette(somePalette)
RGBAタプル要素に 255 以外のアルファ値があるValueError: takes an alpha value of 255
場合に発生します。somePalette
私がやろうとしていることは可能ですか?各パレットリスト要素のアルファ値は純粋に装飾的なもので、24 (RGB) ではなく 32 ビット (RGBA) ピクセルデータを期待する他のプロセスでより簡単に使用できるのでしょうか?
Pygame のインデックス付きサーフェスは、そもそもこの程度の複雑さを処理する機能を備えていない可能性があるように感じますが、そうすべきではない理由を考えたり見つけたりすることもできません。おそらく、Pygame にはspecial_flags
この目的のために神秘的なものが 1 つありますか?
Surface 自体を初期化しようmyIndexedSurface = pygame.Surface(surfSize).convert(8)
とmyIndexedSurface = pygame.Surface(surfSize, flags=pygame.SRCALPHA).convert(8)
しましたが、効果がありませんでした。
私はまだPILまたはPygame のPixelArray
解決策を見ていません。