Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa PNG Lutsinar Saya Muncul Hitam Apabila Diadun dalam Pygame?

Mengapa PNG Lutsinar Saya Muncul Hitam Apabila Diadun dalam Pygame?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 07:00:03140semak imbas

Why Are My Transparent PNGs Appearing Black When Blended in Pygame?

Isu Ketelusan Semasa Menggabungkan PNG dalam Pygame

Apabila memasukkan imej PNG ke dalam permukaan Pygame, mencapai ketelusan boleh menjadi masalah. Walaupun imej mengandungi ketelusan alfa, ia boleh menyebabkan kawasan lutsinar kelihatan hitam. Artikel ini meneroka penyelesaian kepada isu ini.

Pendekatan biasa melibatkan mencipta permukaan dengan ketelusan alfa, memuatkan imej PNG dan menggabungkannya ke permukaan menggunakan kaedah blit. Walau bagaimanapun, isu ini timbul kerana imej yang dimuatkan tidak mempunyai ketelusan per piksel secara lalai.

Untuk menangani perkara ini, Pygame mengesyorkan menggunakan kaedah convert_alpha() selepas memuatkan imej. Langkah ini mengubah data imej untuk memasukkan ketelusan alfa bagi setiap piksel.

Berikut ialah kod diubah suai yang menyelesaikan isu ketelusan:

<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>

Dengan memasukkan langkah convert_alpha(), PNG imej mengekalkan ketelusannya apabila diadun pada permukaan, memastikan pemaparan yang tepat.

Atas ialah kandungan terperinci Mengapa PNG Lutsinar Saya Muncul Hitam Apabila Diadun dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn