2016-09-16 409 views

回答

3

方法surface.get_at沒問題。 下面是一個示例,顯示了在不使用Alpha通道的情況下傳輸圖像時的差異。

import sys, pygame 
pygame.init() 
size = width, height = 320, 240 
screen = pygame.display.set_mode(size) 
image = pygame.image.load("./img.bmp") 
image_rect = image.get_rect() 

screen.fill((0,0,0)) 
screen.blit(image, image_rect) 
screensurf = pygame.display.get_surface() 

while 1: 

    for event in pygame.event.get(): 
    if event.type == pygame.MOUSEBUTTONDOWN : 
     mouse = pygame.mouse.get_pos() 
     pxarray = pygame.PixelArray(screensurf) 
     pixel = pygame.Color(pxarray[mouse[0],mouse[1]]) 
     print pixel 
     print screensurf.get_at(mouse) 

    pygame.display.flip() 

這裏,點擊紅色像素會給:

(0, 254, 0, 0) 
(254, 0, 0, 255) 

的PixelArray返回0xAARRGGBB顏色分量,而彩色期待0xRRGGBBAA。另請注意,屏幕表面的alpha通道爲255.

+0

+1很好的答案!只有兩件事:你提到'surface.getAt'並使用'surface.get_at'。這可能會讓人困惑。其次,你在'pygame.display.flip'函數中使用未定義的變量'e'。我不確定它會是什麼樣子,因爲它只是爲了改變幾個字符,所以我不能自己編輯它。 –