Pygame で PNG をブレンドする際の透明度の問題
PNG 画像を Pygame サーフェスに組み込む場合、透明度の達成に問題が生じる可能性があります。画像にアルファ透明度が含まれているにもかかわらず、レンダリングすると透明な領域が黒く表示される場合があります。この記事では、この問題の解決策を検討します。
一般的なアプローチには、アルファ透明度を持つサーフェスを作成し、PNG 画像をロードし、ブリット メソッドを使用してそれをサーフェス上にブレンドすることが含まれます。ただし、この問題は、ロードされた画像がデフォルトでピクセルごとの透明度を持たないために発生します。
これに対処するために、Pygame は、画像をロードした後に Convert_alpha() メソッドを使用することを推奨します。このステップでは、各ピクセルのアルファ透明度を含めるように画像データを変換します。
透明度の問題を解決する修正コードは次のとおりです。
<code class="python">import pygame screen = pygame.display.set_mode((800, 600), pygame.DOUBLEBUF, 32) world = pygame.Surface((800, 600), pygame.SRCALPHA, 32) treeImage = pygame.image.load("tree.png") treeImage = treeImage.convert_alpha() # Apply per-pixel transparency world.blit(treeImage, (0, 0), (0, 0, 64, 64)) screen.blit(world, pygame.rect.Rect(0, 0, 800, 600))</code>
convert_alpha() ステップを組み込むことで、PNG画像はサーフェスにブレンドしても透明度を維持し、正確なレンダリングを保証します。
以上がPygame にブレンドすると透明 PNG が黒く見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。