我正在使用pygame开发一个简单的项目,我需要获取并设置像素颜色。
使用pygame.get_at(())
和pygame.set_at(())
非常慢。
所以我尝试使用PixelArray手动获取和设置颜色。但这仍然很慢
有更快的方法吗?
是否有可能在c ++中获取和设置一个像素,这样它会更快或者有没有办法在python / pygame中做到这一点?
例如:
一个c ++函数,它返回给定坐标处的像素颜色,另一个函数将给定坐标处的像素设置为给定的颜色。
然后我可以用pygame以某种方式调用这些函数。
非常感谢。
答案 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;
}