При изменении вида растрового изображения на уровне пикселов необходимо в первую очередь получить значения цветов пикселов в той области, с которой вы хотите работать. Для получения этих значений используйте метод getPixel().
Метод getPixel() возвращает значение RGB по набору координат пиксела x, y, которые передаются как параметр. Если какие-либо пикселы, с которыми вы работаете, содержат прозрачность (альфа-канал), используйте метод getPixel32(). Этот метод также возвращает значение RGB, но в отличие от метода getPixel() значение, возвращаемое getPixel32(), содержит дополнительные данные, представляющие значение альфа-канала (прозрачности) данного пиксела.
Если же вы хотите просто изменить цвет или прозрачность пиксела растрового изображения, воспользуйтесь методом setPixel() или setPixel32(). Для задания цвета пиксела просто передайте координаты x, y и значение цвета одному из этих методов.
В примере ниже показано, как с помощью метода setPixel() нарисовать крестик на зеленом фоне. Затем метод getPixel() возвращает значение цвета пиксела с координатами 50, 50 и отрисовывает его.
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));
Если необходимо считать значение группы пикселов, а не отдельного пиксела, следует использовать метод getPixels(). Этот метод создает массив байтов из прямоугольной области данных пикселов, передаваемых как параметр. Каждый из элементов массива байтов (иными словами, значений пикселов) является целым числом без знака — 32-битным значением пиксела без множителя.
И наоборот, для изменения (или задания) значения группе пикселов используйте метод setPixels(). Этот метод подразумевает наличие двух параметров (rect и inputByteArray), при сочетании которых получается прямоугольная область (rect) данных пикселов (inputByteArray).
По мере чтения (и записи) данных из inputByteArray для каждого пиксела массива вызывается метод ByteArray.readUnsignedInt(). Если по какой-либо причине совокупность значений пикселов в inputByteArray не формирует прямоугольник, метод прекращает обработку, когда обнаруживает это.
Не забывайте, что и для получения, и для установки данных пикселов массив байтов должен иметь значения пикселов альфа, красного, зеленого и синего цветов (ARGB) с глубиной цвета 32 бита.
В следующем примере методы getPixels() и setPixels() используются для копирования группы пикселов из одного объекта BitmapData в другой.
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;