Почему в Pygame я не могу сделать часть изображения прозрачной?
У меня есть изображение красного шара на синем фоне, сохраненное в виде файла BMP. В изображении используются только два цвета: красный (255, 0, 0) и синий (0, 0, 255). Я написал следующую тестовую программу Pygame, чтобы изолировать проблему. Он просто загружает изображение, устанавливает цвет верхнего левого пикселя в качестве прозрачного и перетаскивает его на экран. Это так просто, как только получается, но я не могу заставить его работать.
import pygame
if __name__ == "__main__":
pygame.init()
size = (640, 400)
screenSurface = pygame.display.set_mode(size)
ballSurface = pygame.image.load("ball.bmp")
transparentColor = ballSurface.get_at((0, 0))
ballSurface.set_colorkey(transparentColor)
screenSurface.blit(ballSurface, ballSurface.get_rect())
pygame.display.update()
pygame.time.wait(30000)
Я пытался передать каждый цвет вручную в set_colorkey()
но безрезультатно. Что я делаю неправильно? Спасибо за любую помощь!
2 ответа
Тьфу! После того, как я очень долго возился с этим, я наконец понял это. Все, что мне нужно было сделать, это изменить load(...)
в load(...).convert()
! Теперь у меня все волосы вырваны.
import pygame
if __name__ == "__main__":
pygame.init()
size = (640, 400)
screenSurface = pygame.display.set_mode(size)
ballSurface = pygame.image.load("ball.bmp")
//You need to loop through each pixel.
for each x in range (0, 640)
for each y in range (o, 400)
pixel =getPixel (x,y)
//algorithm follows
//get each pixel
//find it's color
//change the individual color of each pixel
transparentColor = ballSurface.get_at((0, 0))
pixel.set_colorkey(transparentColor)
screenSurface.blit(ballSurface, ballSurface.get_rect())
pygame.display.update()
pygame.time.wait(30000)