Verständnisfrage zur Transparenz von Icons

  • Moin moin,


    ich habe heute ein Icon mit transparenten Hintergrund in meinen Skin eingebaut und mich dann gewundert, warum die Transparenz nicht korrekt angezeigt wird.
    Dann habe ich mal im Skin metrixhd nachgeschaut und festgestellt, dass dort mit zwei Areas mit demselben Layer gearbeitet wird.
    In der ersten Area wird die Hintergrundfarbe für das Menuitem gesetzt, jenachdem ob aktiv oder nicht.
    In der zweiten Area wird dann der Text und verschiedene Icons für das Menuitem gesetzt. Das jeweilige Icon wird dabei korrekt mit der Transparenz über den Hintergrund gezeichnet.


    In meinem Skin verwende ich aber nur eine Area, in der ich zuerst den Hintergrund setze und dann Text und Icon.
    Dabei wird das Icon mit schwarzer Transparenz gezeichnet. Der zuvor gesetzte Hintergrund wird nicht in der transparenten Fläche des Icons angezeigt.
    Ändere ich die Aufteilung auf zwei Areas, funktioniert es auch mit meinem Skin.


    Warum ist das so?
    Bzw. warum funktoniert es nicht mit nur einer Area?
    Bisher bin ich davon ausgegangen, dass die Elemente entsprechend der Reihenfolge in der Area gezeichnet werden. Somit müsste die Transparenz doch auch nur mit einer Area funktionieren.


    PS: Ich hoffe, ich habe mich verständlich ausgedrückt.

    Gruss Björn.


    SilverGreen-Skin

  • Moin Björn,


    das Feature, das du beschreibst, nennt sich "Alpha Blending". Dabei werden semitransparente Farben gemischt, wenn sie übereinander gelegt werden. Im VDR funktioniert Alpha Blending, wie du schon richtig erkannt hast, nur wenn du zwei Areas übereinander legst und innerhalb dieser Areas mit semitransparenten Elementen arbeitest. Dabei bestimmt der Layer der Areas die Reihenfolge, wie die Elemente übereinander gelegt werden, eine Area mit höherem Layer wird auf eine Area mit kleinerem Layer gelegt. Bei gleichen Layer Werten ist es Zufall, welche Area über welcher angezeigt wird.


    Beim zeichnen innerhalb einer Area wird kein Alpha Blending angewendet. Vielmehr werden die einzelnen Pixel bei einer Zeichenfunktion überschrieben. Wenn du also z.B. eine Area erst mit einem semitransparenten Schwarz, z.B. 99000000 füllst und dann eine Graphik darüber zeichnest, werden die ursprünglichen 99000000 Werte einfach überschrieben. Wenn ein Bild teilweise komplett transparent ist, ist die Area das dann nach dem Zeichnen dort auch.


    Zusammengefasst: um Alpha Blending zu erreichen, musst du mit mehreren Areas arbeiten, anders geht es technisch nicht.


    Ciao Louis

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!