Pygame で画像を操作する場合、予期しない視覚的なアーティファクトを避けるために透明度が正しく処理されていることを確認することが重要です。よくある問題の 1 つは、表面にブリットすると PNG 画像の透明部分が黒く見えることです。この問題は、画像のプロパティに透明度の設定がないために発生します。
これに対処するために、Pygame は、PNG 画像をロードした後に Convert_alpha() メソッドを利用することを提案しています。このプロセスにより、画像の透明度設定が変更され、ピクセルごとの透明度が可能になり、透明な部分が意図したとおりにレンダリングされるようになります。以下は、この修正を組み込んだコードの改訂版です。
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() # Added this line world.blit(treeImage, (0,0), (0,0,64,64)) screen.blit(world, pygame.rect.Rect(0,0, 800, 600))
この変更を行うことで、サーフェスにブリットされたときに PNG 画像の透明な部分が正しくレンダリングされるようになります。これにより、透明な領域が黒く見える問題が解決され、画像が意図した透明度を確実に保持できるようになります。
以上がPygame でブリットすると透明 PNG が黒く見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。