在转换为位图对象的同时,保持圆形或任何其他具有中心配准的显示对象的中心配准点被证明是困难的。
以下代码将圆形转换为位图对象并将其定位在舞台的中心,然后删除其中心注册点。
新 bitmapData 对象(左上角)的 x 和 y 原点与圆(中心)的 x 和 y 原点相同,但无法转换 bitmapData.draw() 的 x 和 y 位置 - 它的参数只接受宽度、高度、透明度和填充颜色。
var myCircle:Shape = new Shape();
myCircle.graphics.beginFill(0xFF0000, 1.0);
myCircle.graphics.drawCircie(0, 0, 100);
myCircle.graphics.endFill();
var matrix:Matrix = new Matrix();
matrix.tx = myCircle.width / 2;
matrix.ty = myCircle.height / 2;
var myCircleBitmapData:BitmapData = new BitmapData(myCircle.width, myCircle.height, true, 0x00FFFFFF);
myCircleBitmapData.draw(myCircle, matrix);
var result:Bitmap = new Bitmap(myCircleBitmapData, PixelSnapping.AUTO, true);
result.x = stage.stageWidth / 2 - matrix.tx;
result.y = stage.stageHeight / 2 - matrix.ty;
addChild(result);
在矩阵平移的帮助下,新的位图对象将出现在舞台的中心,但应用常规或 3D 旋转等,将清楚地表明注册点现在是左上角而不是中心。
如何在保持中心注册的同时将中心注册的显示对象转换为位图?