Frage

Diese Frage hängt mit meinem frühere Frage auf so.

Ich möchte zwei Schichten mit Alpha kombinieren, die nur auf einen bestimmten Abschnitt der Quellschicht angewendet werden.Eine Art und Weise, die ich ausprobierte, war, sourceconstantalpha auf $ ff zu setzen (und die Funktion des Alphakanals in der Quellschicht verwenden).

Diese Art von Werken - obwohl langsam (ich denke, ich kann es mit der Verwendung von Scanlines beschleunigen), ist die Art von Teil, dass ich nicht herausfinden kann, was den Alphakanal einstellen soll.Die Dokumentation legt nahe, dass die Berechnung ist:

generasacodicetagpre.

Ich habe ein paar verschiedene Werte durch Vermutungsarbeit ausprobiert, aber meine erste Frage ist: Wie berechnete ich den Alpha-Wert?

Nachdem ich ein paar andere Fragen gelesen habe, stieß ich auf die Funktion transparentblt, was das Masking-Brunnen (und schnell), aber nicht die Transparenz, gibt es eine Möglichkeit, einen Weg zu kombinieren Diese beiden rufen zusammen (vielleicht mit einer dritten Ebene)?

generasacodicetagpre.

War es hilfreich?

Lösung

Trick: Dieselben Farben in welchem Verhältnis verringern, führt dies in derselben Farbe.

So ist der einfachste Weg (und vielleicht auch das effizienteste), das transparente Ergebnis zuerst auf eine temporäre Bitmap zu zeichnen, und alphablieren Sie diese Bitmap auf dem Ziel-Leinwand.

mit Zugriff auf das Ziel-Leinwand während der Zeichnung:

generasacodicetagpre.

und ohne Zugang zum Zielleinwand während der Zeichnung:

generasacodicetagpre.

Andere Tipps

Nur für die Vollständigkeit ( "Wie berechnete ich den Alpha-Wert?" ):

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top