私は何千回も実行されるこのループを持っています(したがって効率的である必要があります)。ビットマップピクセルの値を変更します。
ループを考えて実行し、特定のピクセルグループをアルファに「切り替え」て、後で元に戻すことができるようにしたいと思います。
私の質問はです。値を切り替えるにはどうすればよいですか?したがって、0xFFCC1BE0が0x00CC1BE0になるとすると、0xFFCC1BE0に戻したい場合は、00を取得してFFにします。
メモリが不足しているため、2つのビットマップを作成できません:-(
とにかくここに私がこれまでに持っているものがあります:
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);
}
}
}
}