Wanneer u de weergave van een bitmapafbeelding op pixelniveau wilt wijzigen, moet u eerst de kleurwaarden ophalen van de pixels in het gebied dat u wilt bewerken. U gebruikt de methode
getPixel()
om deze pixelwaarden te lezen.
Met de methode
getPixel()
wordt een RGB-waarde opgehaald uit een set x- en y-(pixel)coördinaten die worden doorgegeven als een parameter. Als een van de pixels die u wilt bewerken transparantiegegevens (alfakanaal) bevat, moet u de methode
getPixel32()
gebruiken. Met deze methode wordt ook een RGB-waarde opgehaald, maar in tegenstelling tot met
getPixel()
, bevat de door
getPixel32()
geretourneerde waarde aanvullende gegevens met betrekking tot de alfakanaalwaarde (transparantie) van de geselecteerde pixel.
Als u slechts de kleur of transparantie van een pixel in een bitmap wilt wijzigen, kunt u de methode
setPixel()
of
setPixel32()
gebruiken. U stelt de kleur van een pixel in door de x- en y-coördinaten en de kleurwaarde door te geven aan een van deze methoden.
In het volgende voorbeeld wordt
setPixel()
gebruikt om een kruis op een groene BitmapData-achtergrond te tekenen. Vervolgens wordt
getPixel()
gebruikt om de kleurwaarde van de pixel op coördinaat 50, 50 op te halen en de geretourneerde waarde te traceren.
import flash.display.Bitmap;
import flash.display.BitmapData;
var myBitmapData:BitmapData = new BitmapData(100, 100, false, 0x009900);
for (var i:uint = 0; i < 100; i++)
{
var red:uint = 0xFF0000;
myBitmapData.setPixel(50, i, red);
myBitmapData.setPixel(i, 50, red);
}
var myBitmapImage:Bitmap = new Bitmap(myBitmapData);
addChild(myBitmapImage);
var pixelValue:uint = myBitmapData.getPixel(50, 50);
trace(pixelValue.toString(16));
Gebruik de methode
getPixels()
als u niet de waarde van één pixel, maar die van een groep pixels wilt lezen. Deze methode genereert een bytearray op basis van een rechthoekig gebied met pixelgegevens dat wordt doorgegeven als een parameter. Alle elementen van de bytearray (de pixelwaarden) zijn gehele getallen zonder teken: 32-bits niet-vermenigvuldigde pixelwaarden.
Wanneer u de waarde van een groep pixels wilt instellen of wijzigen, gebruikt u de methode
setPixels()
. Deze methode verwacht twee parameters (
rect
en
inputByteArray
) die worden gecombineerd om een rechthoekig gebied (
rect
) met pixelgegevens (
inputByteArray
) te produceren.
Terwijl gegevens worden gelezen (en geschreven) uit
inputByteArray
, wordt de methode
ByteArray.readUnsignedInt()
aangeroepen voor elk van de pixels in de array. Als
inputByteArray
om welke reden dan ook niet een volledige rechthoek aan pixelgegevens bevat, worden de afbeeldingsgegevens niet meer verwerkt.
Voor het ophalen en instellen van pixelgegevens verwacht de bytearray 32-bits ARGB-pixelwaarden.
In het volgende voorbeeld worden de methoden
getPixels()
en
setPixels()
gebruikt om een groep pixels van het ene naar het andere object BitmapData te kopiëren:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;
var bitmapDataObject1:BitmapData = new BitmapData(100, 100, false, 0x006666FF);
var bitmapDataObject2:BitmapData = new BitmapData(100, 100, false, 0x00FF0000);
var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bitmapDataObject1.getPixels(rect);
bytes.position = 0;
bitmapDataObject2.setPixels(rect, bytes);
var bitmapImage1:Bitmap = new Bitmap(bitmapDataObject1);
addChild(bitmapImage1);
var bitmapImage2:Bitmap = new Bitmap(bitmapDataObject2);
addChild(bitmapImage2);
bitmapImage2.x = 110;