2012-10-18 7 views

risposta

8

Il Pygame documentation dice che dato un oggetto di superficie, è possibile creare un wrapper PixelArray per fornire un accesso matrice 2D diretto ai suoi pixel chiamando il metodo PixelArray() del modulo come questo:

pxarray = pygame.PixelArray(surface) 

Logicamente un PixelArray oggetto è una matrice bidimensionale di valori RGB memorizzati come numeri interi.

Un elemento PixelArray pixel può essere assegnato un valore intero crudo, un'istanza pygame.Color (un oggetto per riproduzioni a colori), o una tupla (r, g, b[, a]).

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

Si cita anche:

Tuttavia, viene restituito valore intero solo di pixel. Pertanto, per confrontare un pixel con un colore particolare , il colore deve essere mappato per la prima volta utilizzando il metodo dell'oggetto per il quale è stato creato lo PixelArray.

Il che significa che è necessario utilizzare il metodo per ottenere Surface.map_rgb() tuple RGB da PixelArray valori interi ogni volta che non sta facendo un incarico alla matrice, cioè quando lettura il valore di un pixel, come si sta facendo nella seguente condizione:

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

Spero che questo aiuti.

+0

Grazie, l'ha fatto. –

Problemi correlati