AutoIt-Heise-Newsticker

  • würdest Du mir bitte diese Funktion näher eräutern? Ich weiß zwar dass es um html und unicode geht, aber nicht was die Funktion wirklich bewirkt.

    In HTML werden Unicodezeichen codiert angegeben, das kann entweder durch ihren Charakterindex geschehen oder durch ihren Bezeichner.
    laquo («) wird in diesem Array gefunden und der korrekte Unicode-Wert rausgesucht um ihn dann im String mit ChrW(index) zu ersetzen.

    So taucht im Newsticker nicht laquo auf sondern das Zeichen direkt.

    • Offizieller Beitrag

    Hättest Du ein einfaches Beispiel ohne Internetfunktionalität und mit ruckelfreier Schrift und Ansicht bei Größenänderung der Gui parat?

    Klar! Ich habe mal die dafür notwendigen Sachen rauskopiert:

    Spoiler anzeigen
  • Hallo

    alpines: Vielen Dank für die Erklärung.

    Oscar : -Klasse- Vielen Dank für den Beispielcode !

    Ich habe das für mich jetzt mal angepasst. Displaybreite 1920. Wer grün nicht gerne leiden mag, kann die Farben ja gerne nach belieben anpassen.

    Spoiler anzeigen

    Die Hintergrundfarbe der Laufschrift von Hex zu ARGB anzupassen war ein bischen schwierig für mich. Doch UEZ hat mal einen keinen RGB to ARGB converter gepostet. Damit war das kein Problem mehr.

    • Offizieller Beitrag

    Wenn Du die Laufschrift über den ganzen Bildschirm haben willst, dann $iMarqueeLeft auf Null setzen. Das setzt auch den rechten Rand auf Null.
    Und wenn Du $iMarqueeHeight größer machst, dann kannst Du auch den Zeichensatz noch größer machen:

    Spoiler anzeigen

    Ach, und ARGB ist eigentlich das gleiche wie RGB, nur dass davor noch der Alphawert steht.
    Bei den Hexwerten von RGB stehen jeweils 2 Stellen für Rot, 2 für Grün und 2 für Blau. Bei ARGB brauchst Du vorne nur 2 Stellen für den Alphawert vorsetzen.

  • Vielen Dank für das Beispiel und die Erklärungen zu ARGB.

    Die entscheidenden Zeilen sind demnach in Deinem Beipiel Nr. 15, 16, 68 und 69.
    Damit kann man wirklich klasse experimentieren.

  • Die Hintergrundfarbe der Laufschrift von Hex zu ARGB anzupassen war ein bischen schwierig für mich. Doch UEZ hat mal einen keinen RGB to ARGB converter gepostet. Damit war das kein Problem mehr.

    Zufällig habe ich den heute auch gesehen und in mein Programm eingebaut.
    Aber @UEZ:

    Der hat einen Fehler, Rot und Blau sind vertauscht und somit kommen falsche Farben raus.
    Richtig wäre es so rum

    AutoIt
    $color_hex_rgb = 0x1188AA
        $Red = BitAND($color_hex_rgb, 0xFF)
        $Green = BitAND(BitShift($color_hex_rgb, 8), 0xFF)
        $Blue = BitAND(BitShift($color_hex_rgb, 16), 0xFF)
        $color_argb = 0xFF000000 + $Red * 0x10000 + $Green * 0x100 + $Blue
        MsgBox(0, "Test", Hex($color_argb, 8))

    da ich immer erst mit Grün getestet hatte ist es mir erst spät aufgefallen.

    Nachtrag: Ich könnte da auch einen ARGB zu RGB Konverter gut brauchen ....

  • Das hier sollte funktionieren:

    Allgemein zur Erklärung:
    Ein 32Bit INT hat 32 bit ;)
    Die ersten bits sind alpha, danach rot, grün und blau, jeweils 8 BIT.
    Also: AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB

    Nutzt man nun BITAND werden genau diese Variablen extrahiert. Hexadezimal hat man nur 8 Stellen, also AARRGGBB nur statt mit 0 oder 1 mit 0 bis F. 0xF=15 entspricht somit 11111111. 0xFF=255 -> 1111111111111111
    macht man ein BITAND werden von der Farbe alle genommen, die bei der zweiten Zahl eine 1 haben:
    AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB -> Farbe
    00000000 00000000 11111111 00000000 -> 0x0000FF00=0xFF00
    BitAnd($farbe,0xFF00) gibt den grünwert.

    BITSHIFT verschiebt die 1en um x stellen nach rechts, also BitShift($color_hex_rgb, 8) macht aus der Zahl RRGGBB ein 00RRGG, dann mit 0xFF verundet bekommt man den Grünwert,...

    Dementsprechen muss man nur den Alphawert auf die Farbe addieren um ein ARGB vom RGB bekommen. 0xFF, also 255 umd 24 Bit nach links verschoben wäre volle sichtbarkeit -> 0xFF000000 einfach auf die hexzahl draufaddiert.
    Bei einer rgb farbe werden die 8 0en ganz vorne nur ignoriert. würde man also die Farbe nehmen wäre sie vollkommen transparent ;) (Int sind immer mindestens 32Bit in AutoIT, auch wenn das ohne Alpha nicht nötig wäre.)

    Allgemein zu den Farben:
    Du kannst dir die Farben ja selber mischen mit den Anteilen. Je größer die Zahl, desto mehr von der Farbe ist drin. sind alle Zahlen gleich->grau, je nach größe der Zahl ist es dann ein helles/dunkles Grau.
    Dementsprechend ist 0xFF1F1F1F ein sehr dunkles Grau :) nimmt man 0xFF10101F hat das dunkle grau einen kaum erkennbaren blaustich :)

  • Zufällig habe ich den heute auch gesehen und in mein Programm eingebaut.Aber @UEZ:

    Der hat einen Fehler, Rot und Blau sind vertauscht und somit kommen falsche Farben raus.
    Richtig wäre es so rum

    AutoIt
    $color_hex_rgb = 0x1188AA
        $Red = BitAND($color_hex_rgb, 0xFF)
        $Green = BitAND(BitShift($color_hex_rgb, 8), 0xFF)
        $Blue = BitAND(BitShift($color_hex_rgb, 16), 0xFF)
        $color_argb = 0xFF000000 + $Red * 0x10000 + $Green * 0x100 + $Blue
        MsgBox(0, "Test", Hex($color_argb, 8))

    da ich immer erst mit Grün getestet hatte ist es mir erst spät aufgefallen.

    Nachtrag: Ich könnte da auch einen ARGB zu RGB Konverter gut brauchen ....

    Dein Konverter macht aus ARGB ein ABGR, wenn wir annehmen, dass der Farbwert als ARGB kodiert ist. ;)

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Dein Konverter macht aus ARGB ein ABGR, wenn wir annehmen, dass der Farbwert als ARGB kodiert ist.

    Mist. Ich hatte _ChooseColor(1) statt _ChooseColor(2) genommen.
    Sorry

    @Kanashius : Und deshalb hatte meinen "simplen" Behandlungsversuche auch immer keinen Erfolg. Vielen Dank für die Erklärung, ich hab deine Funktion mal 1:1 übernommen