Domanda

C'è un modo per applicare un colorTransform ad un BitmapData in un cerchio piuttosto che in un rettangolo?

Invece di cancellare parti rettangolari di un'immagine riducendo il canale alfa come nel seguente codice, vorrei farlo in ambienti.

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

Io ho un codice che scorre i pixel, estrae il valore alfa e utilizza setPixel ma cuciture significativamente più lento rispetto alla funzione colorTransform.

È stato utile?

Soluzione

Prova a creare un cerchio utilizzando l'API di disegno (flash.display.Graphics) e poi di disegno che sui dati bitmap con BlendMode.ERASE. Questo potrebbe risolvere il tuo problema, se ho capito bene.

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);

Io non sono sicuro al 100% che la modalità di cancellazione miscela funziona soddisfacentemente con il comando draw (), ma non riesco a capire perché non dovrebbe. Per favore fatemi sapere come va a finire!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top