Клонировать изображение в Flex 4.6 - PullRequest
0 голосов
/ 12 марта 2012

Последние несколько часов я пытался клонировать изображение во Flex (используя компоненты Spark, но также пытался конвертировать между Bitmap и BitmapImage).

Что я пытаюсь сделать, так это создать простое приложение для рисования, которое отслеживает каждый мазок кисти. Как только изображение на холсте изменилось, его необходимо клонировать, а затем поместить клон на панель истории в нижней части приложения.

Вещи, которые я пробовал, включают:

  • Использование ObjectUtils.clone (Object)
  • Создание BitmapData из Image.content, затем превращение его в растровое изображение и его просто отображение (в изображении нет поля содержимого, как говорится)
  • Выполнение байт-копии и другие, которые я мог найти в Интернете, конечно.

Итак, как можно клонировать образ (изображение искры) во Flex 4.6?

Большое спасибо!

- Дэнни Нофут

Ответы [ 2 ]

10 голосов
/ 12 марта 2012

Вместо клонирования вы можете получить изображение чертежа и установить растровое изображение в качестве источника для изображения истории, сделайте что-то вроде этого

private function getBitmapData( target:DisplayObject ) : BitmapData
{

   //target.width and target.height can also be replaced with a fixed number.
   var bd : BitmapData = new BitmapData( target.width, target.height );
   bd.draw( target );
   return bd;
}

В некоторых случаях, если ширина и высотаесли цель не работает, вы можете использовать метод getbounds, чтобы получить границы объекта, а из границ взять ширину и высоту.

1 голос
/ 08 февраля 2013

В битовой карте есть функция клонирования:

public class EZB2ParkObject extends Image implements IEZB2ParkObject
{

    public function clone():IEZB2ParkObject{
        var n:IEZB2ParkObject   = new EZB2ParkObject();
        n.id = this.id;
        n.source = new Bitmap(BitmapData(this.source.bitmapData).clone());
        n.dimensions = this.dimensions;
        n.assetId = this.assetId;
        return n;
    }
}
...