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

Mengapa PNG Lutsinar Saya Muncul Hitam Apabila Diadun dalam Pygame?

Patricia Arquette
Lepaskan: 2024-10-30 07:00:03
asal
222 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan