0

我想手动将行从另一个数组复制到 pygame 帧缓冲区。借助下面的代码。

pixels = pygame.PixelArray(window)
center_x = (WINDOW_W - W) / 2
center_y = (WINDOW_H - H) / 2
for y in range(H):
    for x in range(W):
        pixel = gradient[x + y * W]
        pixel = (((pixel & 0x0000ff << 16) |
                 (pixel & 0x00ff00) |
                 ((pixel & 0xff0000) >> 16))

        pixels[center_x + x, center_y + y] = pixel

然而,Python 吐出了一个语法错误。

    pixels[center_x + x, center_y + y] = pixel
^
SyntaxError: invalid syntax

我尝试了以下方法,但都没有奏效。

pixels['center_x' + 'x', 'center_y' + 'y'] = pixel

pixels[(center_x) + (x), (center_y) + (y) = pixel

我认为当我声明像素变量时,错误也可能在这里。

pixels = pygame.PixelArray(window)

其中window是对模块pygame的引用

window = pygame.display.set_mode([WINDOW_W, WINDOW_H], 0, 24)
4

1 回答 1

0

此语句缺少右括号:

pixel = (((pixel & 0x0000ff << 16) |
          (pixel & 0x00ff00) |
          ((pixel & 0xff0000) >> 16))

固定声明:

(((pixel & 0x0000ff) << 16) |
  (pixel & 0x00ff00) |
 ((pixel & 0xff0000) >> 16))
于 2020-07-26T17:58:49.563 回答