0

長方形ではなく円のBitmapDataにcolorTransformを適用する方法はありますか?

以下のコードのようにアルファチャネルを減らして画像の長方形の部分を消去するのではなく、円を描くようにしたいと思います。

 _bitmap.colorTransform(new Rectangle(mouseX-d/2, mouseY-d/2, d, d),
 new ColorTransform(1, 1, 1, .5, 0, 0, 0, 1));

ピクセルをループし、アルファ値を抽出し、setPixelを使用するコードがいくつかありますが、シームはcolorTransform関数よりも大幅に遅くなります。

4

1 に答える 1

1

描画API(flash.display.Graphics)を使用して円を作成し、それをBlendMode.ERASEを使用してビットマップデータに描画してみてください。私が正しく理解していれば、それはあなたの問題を解決するかもしれません。

var circle : Shape = new Shape;
circle.graphics.beginFill(0xffcc00, 1);
circle.graphics.drawEllipse(-50, -50, 100, 100);

// Create a transformation matrix for the draw() operation, with
// a translation matching the mouse position.
var mtx : Matrix = new Matrix();
mtx.translate(mouseX, mouseY);

// Draw circle at mouse position with the ERASE blend mode, to
// set affected pixels to alpha=0.
myBitmap.draw(circle, mtx, null, BlendMode.ERASE);

ERASEブレンドモードがdraw()コマンドで十分に機能するかどうかは100%わかりませんが、なぜ機能しないのかわかりません。それがどのように機能するか教えてください!

于 2010-01-02T16:19:48.893 に答える