将形状转换为位图

时间:2014-03-08 19:14:15

标签: actionscript-3

我创建了一个Shape的子类,其中包含已配对的GraphicsPathGraphicsStroke个对象。该类有一个公共方法,用于将形状检索为位图,以便传递给Pixelbender内核 - 方法如下:

public function GetBitmap():Bitmap{
    var bmpData:BitmapData = new BitmapData(this.width, this.height, true, 0x00FFFFFF);
    bmpData.draw(this);
    return new Bitmap(bmpData);
}

要测试这些,我有以下代码:

var v:Vector.<Number> = new <Number>[10,10,50,10,50,50]; //defines GraphicsPath.data to be used
var wave:CustomWave = new CustomWave(v,0xff0000); //constructor for the subclass
wave.Refresh(); //clears the Shape and redraws the GraphicsPath 

//adds as shape
addChild(wave);

//adds as bitmap
var bmp:Bitmap = wave.GetBitmap()
addChild(bmp);

两者的视觉输出:

Shape vs Bitmap output

知道可能导致差异的原因是什么?

2 个答案:

答案 0 :(得分:0)

这可能与您Shape的{​​{1}}的注册点有关。您是否有机会在Bitmap坐标的上方或左侧绘制内容?然后你必须在0,0调用中添加一些参数(可能是转换矩阵),以获得正确的偏移等。

答案 1 :(得分:0)

这是一个很长的故事,如何使用widthheight,如果你不想要任何问题,从(0,0)画出你的路径,或者你可以修改你的功能: / p>

public function GetBitmap():Bitmap {
    var bounds: Rectangle = getBounds(this);
    var bmpData:BitmapData = new BitmapData(bounds.width, bounds.height, true, 0);
    bmpData.draw(this, new Matrix(1, 0, 0, 1, -bounds.x, -bounds.y));
    return new Bitmap(bmpData);
}