【发布时间】:2011-07-24 04:03:33
【问题描述】:
我正在制作一个只使用带有黑白像素的 PNG 的游戏。但有时我想将白色像素的颜色更改为不同的颜色,例如绿色 (#00FF00)。
我该怎么做呢?
编辑: 好的,我想出了一个解决方案
这是一个简单的函数:
无效 setColor(SDL_Surface *surface, SDL_Color 颜色) { Uint16 *pixels = (Uint16 *) 表面->像素; // 从 Surface 获取像素 // 遍历像素并改变颜色 for (int i = 0; i w * 表面->h);我++){ if (pixels[i] == SDL_MapRGB(surface->format, 0xFF, 0xFF, 0xFF)) // 搜索白色像素 像素[i] = SDL_MapRGB(表面->格式,color.r,color.b,color.g); } }请记住,如果您使用 32 位表面,请将“Uint16”更改为“Uint32”,或者将“Uint8”更改为 8 位表面。
我不确定这段代码有多快,但它可以完成工作。
【问题讨论】:
-
This 是如何完成的,适用于所有位深度、alpha 等。