快速获取和设置pygame中的像素颜色的方法

时间:2014-12-30 18:36:20

标签: python c++ python-3.x pygame pixel

我正在使用pygame开发一个简单的项目,我需要获取并设置像素颜色。 使用pygame.get_at(())pygame.set_at(())非常慢。

所以我尝试使用PixelArray手动获取和设置颜色。但这仍然很慢

有更快的方法吗?

是否有可能在c ++中获取和设置一个像素,这样它会更快或者有没有办法在python / pygame中做到这一点?

例如:

一个c ++函数,它返回给定坐标处的像素颜色,另一个函数将给定坐标处的像素设置为给定的颜色。

然后我可以用pygame以某种方式调用这些函数。

非常感谢。

1 个答案:

答案 0 :(得分:0)

C ++ SetPixel和GetPixel函数

window.h库的一部分

将Pixel设置为带颜色的坐标

COLORREF SetPixel(
  _In_  HDC hdc,
  _In_  int X,
  _In_  int Y,
  _In_  COLORREF crColor
);

返回指定坐标上的像素颜色

COLORREF GetPixel(
  _In_  HDC hdc,
  _In_  int nXPos,
  _In_  int nYPos
);

SDL:

获取颜色

Uint32 rawpixel = getpixel(surface, x, y);
Uint8 red, green, blue;

SDL_GetRGB(rawpixel, surface->format, &red, &green, &blue);

在coords的SetPixel

void setpixel(SDL_Surface *screen, int x, int y, Uint8 r, Uint8 g, Uint8 b)
{
    Uint32 *pixmem32;
    Uint32 colour;  

    colour = SDL_MapRGB( screen->format, r, g, b );

    pixmem32 = (Uint32*) screen->pixels  + y + x;
    *pixmem32 = colour;
}

Link