在过去的几个小时里,我一直在尝试在Flex中克隆图像(使用Spark组件,但也尝试在Bitmap和BitmapImage之间进行转换)。
我正在尝试的是创建一个简单的绘画应用程序,它跟踪每个画笔描边。一旦“画布上的图像”发生变化,就会克隆它,然后将克隆放入应用程序底部的“历史记录”面板中。
我尝试过的事情包括:
基本上,如何在Flex 4.6中克隆Image(Spark Image)?
非常感谢!
- Danny Nophut
答案 0 :(得分: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方法获取对象的边界,并从边界获取宽度和高度。
答案 1 :(得分:1)
在bitmapdata上有克隆功能:
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;
}
}