我正在製作僅使用PNG和黑白像素的遊戲。但有時候我想將白色像素的顏色改成不同的顏色,如綠色(#00FF00)。更改SDL中的像素顏色
我該如何去做這件事?
編輯: 好吧,我想出了一個解決方案
下面是一個簡單的功能,可以這樣做:
void setColor(SDL_Surface *surface, SDL_Color color) { Uint16 *pixels = (Uint16 *) surface->pixels; // Get the pixels from the Surface // Iterrate through the pixels and chagne the color for (int i = 0; i w * surface->h); i++) { if (pixels[i] == SDL_MapRGB(surface->format, 0xFF, 0xFF, 0xFF)) // Search for white pixels pixels[i] = SDL_MapRGB(surface->format, color.r, color.b, color.g); } }
東西要記住,改變「標記Uint16」到「UINT32」如果您正在使用32位表面,或者「Uint8」用於8位表面。
我不確定這段代碼有多快,但它完成了工作。
[This](http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access)是如何完成的,適用於所有位深度,alpha等。 – Valmond