Gradientenverlauf mit Multi Colored Maker

  • Hallo Gemeinde,

    die beigefügten Bilder zeigen ein Flash Anwendung.

    Kann man mit AutoIt den obrigen Farbbalken, ich nenn den mal so, programmieren.

    In den Farbbalken kann man zusätzliche Rautenpunkte einfügen und deren Farbe ändern und verschieben.

    Die Punkte können auch wieder entfernt werden.

    Man erhält dann einen Gradientenverlauf und deren RGB Code im unteren Feld.

    Ich weiss nicht wo ich ansetzten soll um diesen Farbbalken(Slider?) mit den hinzufügen der Rautenpunkten zu erstellen.

    Vielleicht mit _GDIPlus_LineBrushSetPresetBlend aber wie lese ich die RGB Werte aus und bekomme den Balken mit den Farbrauten hin

    Hat jemand vielleicht eine Idee?

    Unter http://www.die-webschmiede.de/autoit/ kann man sich das real anschauen.

    Gruß

  • Hallo BugFix,

    auf den bin ich auch schon gestoßen.

    Sieht sehr komplex aus, muss mich da erst durchwurschteln.

    Ist es denn prinzipiell Möglich mehrere Picker(diese rautenförmigen Dinger) in den Gradientenverlauf einzugeben und deren Farben zu ändern um dann den Verlauf als rgb zu errechnen?

  • Hallo BugFix,

    auf den bin ich auch schon gestoßen.

    Sieht sehr komplex aus, muss mich da erst durchwurschteln.

    Ist es denn prinzipiell Möglich mehrere Picker(diese rautenförmigen Dinger) in den Gradientenverlauf einzugeben und deren Farben zu ändern um dann den Verlauf als rgb zu errechnen?

    Ich würde das mit GDI+ lösen und die Mausposition auslesen und dort ein Objekt erstellen.

    An sich ist das einfach, aber ich kenne mich mit dem Verlauf nicht aus und was da genau passieren soll.

    Aber logisch würde ich das auf den ersten Blick mit GDI+ lösen.

    • Offizieller Beitrag

    Ist es denn prinzipiell Möglich mehrere Picker(diese rautenförmigen Dinger) in den Gradientenverlauf einzugeben und deren Farben zu ändern um dann den Verlauf als rgb zu errechnen?

    Ich würde so vorgehen, da ein beidseitig verschiebbarer Slider in AutoIt nicht existiert:

    - 1. Slider links beginnend oben + davor ein kleines quadratisches Label für aktuelle Farbe (Ersatz für die Raute)

    - Picture Ctrl (für Gradient) darunter

    - 2. Slider rechts beginnend unten + dahinter ein kleines quadratisches Label für aktuelle Farbe

    - Dann die Raster-Ctrl für die Vorgabefarben (ich würde da Label nehmen)

    Auswertung:

    - Klick auf Label für aktuelle Farbe links, dann Klick auf Vorgabefarbe --> Label einfärben --> Gradient mit geänderter Anfangsfarbe setzen

    - Klick auf Label für aktuelle Farbe rechts, dann Klick auf Vorgabefarbe --> Label einfärben --> Gradient mit geänderter Endfarbe setzen

    - Bei Verschieben der Slider entsprechend den Farbwert anpassen (musst du dir eine Routine für schaffen) und Gradient neu zeichnen)

    Hier mal, wie du den Gradienten mittels Funktion zeichnen kannst. An dem Rest probier dich erst mal selbst. ;)

  • Binde mal folgende UDF ein :

    #include <StaticConstants.au3>

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hab mal nen kleines Script für den Farbverlauf geschrieben, es können verschiedene Farben mit dem Prozentanteil angegeben werden.

    MfG Kanashius

  • Hi,

    damit solltest du weiter kommen...

    Kanashius, beide die gleiche Idee gehabt:thumbup:...altersbedingt war ich mal wieder langsamer 8)

  • Hallo Andy

    Hallo Kanashiu,

    erst einmal Danke für die Scriptbeispiel werde mich durcharbeiten.:)

    Das mit den setzten der unterschiedlichen Farbpunkten muss ich lösen, aber die Ansätze von Euch werden mir weiterhelfen.

    Danke.

  • Den Farbverlauf würde ich so machen:

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hi UEZ,

    der Gradient sieht gut aus.

    Nur wie bekomme ich den Farbverlauf als RGB angezeigt, z.B.:

    255 255 0

    255 255 26

    255 255 51

    255 255 77

    255 255 102

    255 255 128

    255 255 153

    255 255 179

    255 255 204

    255 255 230

    255 255 255

  • Die 4 Hauptfarben kennst du ja. Um die Zwischenfaben zu bekommen, musst du wohl einmal eine Zeile mit den Farben auslesen und sie in ein Array speichern. Sollten 600 Einträge sein, dann hast du alle Farben inkl. der 4 definierten Farben.

    Geht am schnellsten mit _GDIPlus_BitmapLockBits().

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Bei UEZ wird die Hexadezimale darstellung genommen. Diese sieht so aus:

    0xFFFFFFFF für weiß. 0xFF000000 für schwarz. Statt von 0 bis 10 gehen diese von 0 bis 9 und zusätzlich noch von a bis f. Demnach ist FF=255 -> (15*16+15). Ergibt sich aus F*16+F. Also: AF=10*16+15=175.

    Dabei gibt es 4 paare. 0x FF FF FF FF dabei steht das erste FF für die Transparenz. Dann R,G und B. Zum verrechnen werden Bitweise operationen genutzt:

    Code
    $iInt=BitShift(255,-24)+BitShift(0,-16)+BitShift(125,-8)+150 ;entspricht also dem Wert 0xFF007D96 und somit dem RGB Wert: 0, 125, 150 mit der Transparenz 255 also voll sichtbar.
    $iA=BitRotate(BitAND($iInt,0xFF000000),-24,"D")
    $iR=BitRotate(BitAND($iInt,0x00FF0000),-16,"D")
    $iG=BitRotate(BitAND($iInt,0x0000FF00),-8,"D")
    $iB=BitAND($iInt,0x000000FF)
    
    ConsoleWrite($iInt&" => "&Hex($iInt)&" = "&$iA&" - "&$iR&", "&$iG&", "&$iB&@crlf)
  • Hallo Andy

    Hallo Kanashius ...

    Kleiner Tipp am Rande (hat nichts mit dem Thema des Threads selbst zu tun) :

    Wenn Du andere User in Deinen Beiträgen direkt ansprechen möchtest, dann kannst Du (zumindest einmal) das @ Zeichen gefolgt vom Usernamen eingeben : statt Hallo Musashi also Hallo Musashi

    Als Folge erhält der User eine Benachrichtigung, dass Du ihn in einem Beitrag genannt hast. Falls Du ein Zitat einfügst, dann passiert das z.B. automatisch.

    Nicht zwingend von Bedeutung und auch keine Pflicht, aber eine verbreitete Praxis im Forum ;).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    2 Mal editiert, zuletzt von Musashi (8. März 2019 um 08:51) aus folgendem Grund: Tippfehler