Почему в 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)
Другие вопросы по тегам