我有一个嵌入式图像资源(带有scale9网格),我正在尝试在调整大小时获取bitmapdata,但如果不将它添加到显示列表中我似乎无法做到这一点。
我试试这个:
spriteAsset.setActualSize(w,h);
spriteAsset.width = w;
bmd.draw(spriteAsset);
但是当我用graphics.beginBitmapFill()绘制bitmapdata时,我只得到原始的未拉伸图像。
任何指针?或者我需要拍摄9个单独的BitmapData图像并制作9个单独的位图填充?
干杯, -Josh
答案 0 :(得分:2)
我使用scale9资产的BitmapData.draw()快照的经验是,即使资产已添加到显示列表,scale9也会被丢弃。就我而言,这是一个错误,我不知道是否有报道。
除了scale9令人失望之外,不要忘记BitmapData.draw可以采用矩阵参数。默认情况下,它为null,表示单位矩阵(无缩放,旋转等)。要拍摄已转换资产的快照,您需要提供其转换矩阵...
bmd.draw(spriteAsset, spriteAsset.transform.matrix)
(没有仔细检查这个东西对不起,所以ymmv。)
答案 1 :(得分:0)
Danjp的解决方案很好,但如果您想调整位图数据本身,请尝试使用比例矩阵,即:
var scaledBitmapData:BitmapData = new BitmapData(newWidth, newHeight);
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale(scaleFactor, scaleFactor);
scaledBitmapData.draw(bitmap, scaleMatrix);