2012-10-18 65 views

回答

8

Pygame的documentation说,鉴于表面的对象,你可以创建一个PixelArray包装通过调用模块的PixelArray()方法类似这样提供给它的像素直接二维数组访问:

pxarray = pygame.PixelArray(surface) 

按道理一个PixelArray对象是以整数形式存储的RGB值的二维数组。

PixelArray一个像素项可以被分配一个原始整数值,一个 pygame.Color实例(颜色表示的对象),或一个(r, g, b[, a])元组。

pxarray[x, y] = 0xFF00FF 
pxarray[x, y] = pygame.Color(255, 0, 255) 
pxarray[x, y] = (255, 0, 255) 

它还提到:

但是,只返回一个像素的整数值。因此,为了将像素与特定颜色进行比较,需要使用PixelArray创建的Surface对象的方法的Surface.map_rgb() 方法首先映射颜色。

这意味着你需要使用Surface.map_rgb()方法从PixelArray整数值得到RGB元组,只要你不是在做一个分配到阵列中,即当阅读像素的值,因为正在做在下面的条件:

# Check, if the first pixel at the topleft corner is blue
if pxarray[0, 0] == surface.map_rgb((0, 0, 255)):
        ...

希望这会有所帮助。

+0

谢谢,就是这么做的。 –

相关问题