ARGB für GDI+

  • Hallo,

    ich habe eine Variable mit einem Farbwert im RGB-Format z.b.

    $xFarbe = 0x1A49BC

    Diese Farbe möchte ich in GDI+ verwenden.

    Die Befehle von GDI+ benötigen jedoch das ARGB-Format.

    Der Alpha Anteil währe bei mir immer FF, also keine Transparenz.

    Ich müsste meine Variable um diesen Alpha-Anteil ergänzen, sodass ich nachher

    0xFF1A49BC als ARGB-Wert für GDI+ erhalte.

    Wie kann ich also meine Variable für GDI+ verwenden?


    MfG:

    BigRox

  • Schau dir BitOr, oder die Addition im Hexadezimalsystem an.

    Beispiel:

    Du hast: 0xRRGGBB (hex). Jeder dieser Teile hat 8 Bit. Es sind also 0xRR0000 + 0x00GG00 + 0x0000BB

    Du möchtest: 0xAARRGGBB, es fehlt also der 0xAA000000 Teil. Je nachdem wie du das angehen möchtest kannst du also "einfach" 0xFF000000 addieren, oder (was sicherer ist, da es das Überlaufen in benachbarte Bytes verhindert, falls einzelne Werte größer als 255 sind. Das sollte bei hardgecodeten Werten nicht passieren, wenn die Werte aber berechnet werden und ein Clamp fehlt macht das beim einfachen Addieren die Farben kaputt) ein BitOr verwenden. Noch eine Alternative wäre das Zerlegen in Strings, sodass man via Int("0xFF" & "1A49BC") ebenfalls zum Ergebnis kommt (das wäre die "nicht mathematische Lösung").

    lg

    M

  • Hi,

    kannst du also "einfach" 0xFF000000 addieren

    so gehts!


    OT-Mode ON:

    oder (was sicherer ist, da es das Überlaufen in benachbarte Bytes verhindert, falls einzelne Werte größer als 255 sind. Das sollte bei hardgecodeten Werten nicht passieren, wenn die Werte aber berechnet werden und ein Clamp fehlt macht das beim einfachen Addieren die Farben kaputt)

    Holla die Waldfee!;(:/

    Unter uns Klosterschwestern...egal welches Zeugs du dir da eingeworfen hast, LASS ES!8o

    Auf ein Beispiel was du wirklich meinst, wäre ich ECHT gespannt!:love:...und ich bin ziemlich sicher...DU AUCH!:rofl:

    Btw. schickes Script mit den "gemalten Dreiecken":thumbup:

    OT-Mode OFF

  • Auf ein Beispiel was du wirklich meinst, wäre ich ECHT gespannt!:love:...und ich bin ziemlich sicher...DU AUCH!:rofl:

    Tatsache. Ich habe nur die Hälfte von dem geschrieben was ich mir dabei gedacht habe, so ergibt das natürlich keinen Sinn (bzw. es ist einfach falsch) :D

    Eigentlich wollte ich da auf die Unterschiede zwischen Clamp und BitAnd eingehen (also aus einer Zahl das 0x00??0000 via BitAnd und Div 256^n rausholen vs: Die gesuchte Zahl berechnen und clampen). Dann dachte ich mir, dass das wahrscheinlich nichts bringt und habe den halben Text irgendwie trotzdem geschrieben. Mysteriös.

    lg

    M

  • Mysteriös.

    Alles gut! Willkommen im Club!:theke:

    Ich dachte gar nicht, dass es so einfach geht, aber manchmal hat man eben einfach eine Denkblockade.

    Genau dafür ist das Forum da....:rock: