1

我有一个蓝色背景上的红球图像保存为 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()给无济于事。我究竟做错了什么?谢谢你的帮助!

4

2 回答 2

2

啊! 在搞砸了很长时间之后,我终于弄明白了。我所要做的就是load(...)改变load(...).convert()!现在我的头发都被扯掉了。

于 2013-07-29T01:46:55.443 回答
0
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)
于 2013-07-29T01:45:04.427 回答