我有这个循环运行了数千次(所以需要高效)。它改变位图像素的值。
我希望能够运行循环并将某组像素“切换”为 alpha,然后在稍后将它们切换回来。
我的问题是。如何切换值?所以说 0xFFCC1BE0 变成 0x00CC1BE0 然后如果我想切换回 0xFFCC1BE0 我只需将 00 也转为 FF。
由于内存不足,我无法制作两个位图 :-(
无论如何,这是我到目前为止所得到的:
private void setTransparencyOnLightMap(float WidthPercentage, float LeftPosition)
{
int blankPixel = 0x00000000;
int savedPixel = 0x00000000;
int desiredAlpha = 200; //Can also be 0x00
//Find away of turning alhpa off and on.
for(int BMx = 0; BMx < mLightMap.getWidth(); BMx++)
{
for(int BMy = 0; BMy < mLightMap.getHeight(); BMy++)
{
if(mLightMap.getPixel(BMx, BMy) != blankPixel) //Make sure don't overwrite blank transparent pixels.
{
savedPixel = mLightMap.getPixel(BMx,BMy);
savedPixel = savedPixel | (desiredAlpha << 24);
mLightMap.setPixel(BMx, BMy, savedPixel);
}
}
}
}