Kopiowanie danych bitmapy

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Aby skopiować dane bitmapy z jednego obrazu do drugiego, można użyć szeregu metod: clone() , copyPixels() , copyChannel() , draw() , and drawWithQuality() . Metoda drawWithQuality jest dostępna w programie Flash Player 11.3 lub nowszym oraz środowisku AIR 3.3 i nowszym.

Zgodnie z tym, co sugeruje nazwa, metoda clone() umożliwia klonowanie i próbkowanie danych bitmapy z jednego obiektu BitmapData do innego. Wywołanie tej metody zwraca nowy obiekt BitmapData, który jest dokładnie sklonowanym obiektem instancji, z której został skopiowany.

W poniższym przykładzie opisano klonowanie kopii pomarańczowego kwadratu (stanowiącego element nadrzędny) i umieszczenie tego sklonowanego obiektu za oryginalnym kwadratem nadrzędnym:

import flash.display.Bitmap; 
import flash.display.BitmapData; 
 
var myParentSquareBitmap:BitmapData = new BitmapData(100, 100, false, 0x00ff3300); 
var myClonedChild:BitmapData = myParentSquareBitmap.clone(); 
 
var myParentSquareContainer:Bitmap = new Bitmap(myParentSquareBitmap); 
this.addChild(myParentSquareContainer); 
 
var myClonedChildContainer:Bitmap = new Bitmap(myClonedChild); 
this.addChild(myClonedChildContainer); 
myClonedChildContainer.x = 110;

Metoda copyPixels() to szybki i prosty sposób na kopiowanie pikseli z jednego obiektu BitmapData do innego. Metoda ta pobiera prostokątną migawkę (zdefiniowaną parametrem sourceRect ) obrazu źródłowego i kopiuje ją do innego, również prostokątnego obszaru (o podobnej wielkości). Lokalizacja nowo „wklejonego” prostokąta jest zdefiniowana w parametrze destPoint .

Metoda copyChannel() próbkuje predefiniowany kanał koloru (alfa, czerwony, zielony lub niebieski) ze źródłowego obiektu BitmapData i kopiuje go do kanału docelowego obiektu BitmapData. Wywołanie tej metody nie ma wpływu na inne kanały w docelowym obiekcie BitmapData.

Metody draw() i drawWithQuality() rysują (renderują) zawartość graficzną źródłowego kształtu, klipu filmowego lub innego obiektu ekranowego do nowej bitmapy. Korzystając z parametrów matrix , colorTransform , blendMode oraz docelowego clipRect , można modyfikować sposób, w jaki renderowana jest nowa bitmapa. W metodzie tej w celu wygenerowania danych zastosowano renderowanie wektorowe w programie Flash Player oraz AIR.

Wywołując metodę draw() lub drawWithQuality() , użytkownik przekazuje obiekt źródłowy (ikonkę, klip filmowy lub inny obiekt ekranowy) jako pierwszy z parametrów zgodnie z poniższym przykładem:

myBitmap.draw(movieClip);

Jeśli do obiektu źródłowego były stosowane jakiekolwiek przekształcenia (kolor, macierz itd.) już po jego załadowaniu, przekształcenia te nie są kopiowane do nowego obiektu. W przypadku zamierzenia skopiowania przekształceń do nowej bitmapy konieczne jest następnie skopiowanie wartości właściwości transform z obiektu oryginalnego do właściwości transform obiektu Bitmap korzystającego z nowego obiektu BitmapData.