我创建了一个Shape
的子类,其中包含已配对的GraphicsPath
和GraphicsStroke
个对象。该类有一个公共方法,用于将形状检索为位图,以便传递给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);
两者的视觉输出:
知道可能导致差异的原因是什么?
答案 0 :(得分:0)
这可能与您Shape
的{{1}}的注册点有关。您是否有机会在Bitmap
坐标的上方或左侧绘制内容?然后你必须在0,0
调用中添加一些参数(可能是转换矩阵),以获得正确的偏移等。
答案 1 :(得分:0)
这是一个很长的故事,如何使用width
和height
,如果你不想要任何问题,从(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);
}