Có thể. documentation of the Surface class giải thích cách thực hiện. Nó nắm để chỉ có hai trường hợp: Hoặc bạn thiết lập một lá cờ trong quá trình tạo đối tượng bề mặt:
s = pygame.Surface((16, 16), flags=pygame.SRCALPHA)
Hoặc bạn đưa ra một kênh alpha vào bề mặt mà không có tiểu sử nào:
s = pygame.image.load('spam.png')
s.convert_alpha()
Tài liệu của mô-đun pygame.image nói rằng việc áp dụng convert_alpha là cần thiết cho PNG có độ trong suốt.
Nếu bạn muốn, bạn có thể sửa đổi giá trị alpha của mỗi pixel bằng các mô-đun vẽ và biểu đồ lướt sóng. Khi chỉ định một màu, sử dụng sau đó một bộ gồm bốn số nguyên: (đỏ, lục, lam, alpha). Tham số alpha dao động từ 0 (hoàn toàn trong suốt) đến 255 (hoàn toàn mờ đục).
import pygame
pygame.init()
screen = pygame.display.set_mode((320, 200))
screen.fill((200, 100, 200))
s = pygame.Surface((64, 64), flags=pygame.SRCALPHA)
for i in range(64):
pygame.draw.line(s, (0, 0, 0, i*4), (0, i), (64, i))
screen.blit(s, (50, 30))
pygame.display.flip()
Ví dụ +1 luôn được chào đón. đặc biệt là khi nó hoạt động, và cho thấy những gì cần thiết: D – admalledd
Vâng, điều đó giải thích cách hiển thị các bề mặt với mỗi pixel alpha (ví dụ: từ tệp PNG). Tôi đã biết điều đó rồi. Nhưng tôi tìm cách hiển thị các bề mặt đó với độ mờ có thể điều khiển mã. ví dụ. để làm cho các sprites này chuyển từ hoàn toàn trong suốt sang độ trong suốt của mỗi pixel. Một cái gì đó giống như Surface.set_alpha() nhưng không tắt tính minh bạch trên mỗi pixel đã xuất hiện trên bề mặt. Pha trộn độ trong suốt của mỗi pixel với giá trị minh bạch tổng thể. –