如何使用beginBitmapFill?

时间:2012-05-04 06:54:11

标签: flex

我正在尝试在flex中绘制位图,原始位图是

enter image description here

但是,实际上它在应用程序中显示为

enter image description here

这是代码:

this.component.graphics.beginBitmapFill(leakBitmapData);
this.component.graphics.drawRect(leakPoint.x-halfWidth,leakPoint.y-halfHeight,leakBitmapData.width,leakBitmapData.height);
this.component.graphics.endFill();

只有当我在(0,0)绘制矩形时,它看起来是正确的。 为什么呢?

2 个答案:

答案 0 :(得分:4)

如果要在原点之外绘制某些内容,则需要在BitmapData上进行矩阵转换。像这样:

var px:int = leakPoint.x - halfWidth;
var py:int = leakPoint.y - halfHeight;
var translationMatrix:Matrix = new Matrix;
translationMatrix.tx = px;
translationMatrix.ty = py;

this.component.graphics.beginBitmapFill(leakBitmapData, translationMatrix);
this.component.graphics.drawRect(px, py, leakBitmapData.width, leakBitmapData.height);
this.component.graphics.endFill();

答案 1 :(得分:2)

我认为" leakBitmapData"是一个bitmapdata,由代码生成或加载到应用程序中。

this.component.graphics.beginBitmapFill(leakBitmapData, null, true, false);
this.component.graphics.drawRect(0,0, leakBitmapData.width, leakBitmapData.height);
this.component.graphics.endFill();

this.component.x = -(leakBitmapData.width/2);
this.component.y = -(leakBitmapData.height/2);