我正在制作一个游戏,它只使用黑色和白色像素的PNG图片。但有时我想把白色像素的颜色改变成其他颜色,比如绿色(#00FF00)。
那么我该如何做呢?
编辑: 好的,我想出了一个解决方案。
下面是一个简单的函数:
我不确定这段代码的速度有多快,但它可以完成任务。
那么我该如何做呢?
编辑: 好的,我想出了一个解决方案。
下面是一个简单的函数:
void setColor(SDL_Surface *surface, SDL_Color color) { Uint16 *pixels = (Uint16 *) surface->pixels; // 从表面获取像素需要注意的是,如果使用32位表面,请将“Uint16”更改为“Uint32”,如果使用8位表面,则更改为“Uint8”。
// 遍历像素并更改颜色 for (int i = 0; i w * surface->h); i++) { if (pixels[i] == SDL_MapRGB(surface->format, 0xFF, 0xFF, 0xFF)) // 搜索白色像素 pixels[i] = SDL_MapRGB(surface->format, color.r, color.b, color.g); } }
我不确定这段代码的速度有多快,但它可以完成任务。