0

在过去的几个小时里,我一直在尝试在 Flex 中克隆图像(使用 Spark 组件,但也尝试在 Bitmap 和 BitmapImage 之间进行转换)。

我正在尝试创建一个简单的绘画应用程序来跟踪每个画笔描边。一旦画布上的图像发生了变化,它就会被克隆,然后克隆将被放入应用程序底部的历史面板中。

我尝试过的事情包括:

  • 使用 ObjectUtils.clone(Object)
  • 从 Image.content 创建 BitmapData,然后将其制作为 Bitmap 并简单地显示它(Image 没有内容字段,它说)
  • 当然,执行字节复制和其他我可以在互联网上找到的。

那么基本上,如何在 Flex 4.6 中克隆图像(Spark Image)?

非常感谢你!

——丹尼·诺普特

4

2 回答 2

10

您可以获取绘图的图像并将图像的位图设置为历史图像的源,而不是克隆,做这样的事情

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 方法获取对象的边界并从边界获取宽度和高度。

于 2012-03-12T16:40:28.110 回答
1

位图数据上有一个克隆功能:

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;
    }
}
于 2013-02-07T21:47:45.243 回答