Mit AutoIt könnt ihr der Zeichenplatte verschiedene Befehle senden. Ihr könnt die Farbe des Pinsels ändern, die Dicke des Pinsels, die Transparenz der Farbe und die Hintergrundfarbe. Außerdem könnt ihr ihm befehlen, dass er den letzten Schritt rückgängig machen soll und ihr könnt Bilder importieren.
In diesem Tutorial wird ihnen dies alles und noch mehr erklärt.
Dabei muss die draw.swf-Datei im selben Verzeichnis sein, wie die AutoIt-Datei.
Die $Breite- und $Hoehe-Variablen setzen die Größe der Zeichenplatte. Beim GUI werden zur Höhe auch noch 30 Pixel dazuaddiert, da unter der Platte noch ein Bedienungsmenü in Höhe von 30 Pixeln eingebaut werden.
Damit sich das Skript nicht sofort beendet, nachdem man es startet, benötigen wir noch eine Schleife.
Schreibt also nach dem GuiSetState()-Befehl noch folgenden Code:
AutoIt-Quelltext
While 1
$gMsg=GUIGetMsg()
If $gMsg=-3 Then Exit
Wend
Wenn ihr das Skript jetzt abspeichert und ausführt, könnt ihr einen weißen Feld sehen, jedoch kann man nichts zeichnen.
Um was zeichnen zu können, muss man zwei Variablen bearbeiten, und zwar die Transparenz des Pinsels und die Dicke.
Die Variablen heißen t für Transparenz und d für Dicke.
Schreibt also vor eurer While-Schleife folgenden Code:
AutoIt-Quelltext
$Obj.SetVariable("t", 100) ; Setzt die Sichtbarkeit auf 100%
$Obj.SetVariable("d", 10) ; Setzt die Dicke auf 10 Pixel
$Obj.SetVariable("t",100); Setzt die Sichtbarkeit auf 100%
$Obj.SetVariable("d",10); Setzt die Dicke auf 10 Pixel
Wenn ihr euer Quelltext jetzt speichert und ausführt, solltet ihr bereits auf eurer Platte zeichnen können.
Bei der Befehlsleiste beginnen wir mal mit der Pinselfarbe. Die Variable dafür heißt "c" für Color.
Schreibt vor eurem GuiSetState-Befehl folgenden Code:
Ganz am Anfang eures Skriptes kommen die includes und die Deklarierung von Variablen.
Inkludiert die "misc.au3"-Datei und definiert die Variable "$color":
Innerhalb der While-Schleife (vor dem Wend-Befehl) müssen wir dem Label noch eine Aktion geben, welches die Pinselfarbe des FlashObjektes ändert.
Schreibt also folgenden Befehl vor dem Wend-Befehl:
AutoIt-Quelltext
If $clabel1=$gMsg Then
$colorchoose = _ChooseColor(2, $color, 2)
If $colorchoose<>-1 Then $color = $colorchoose
$Obj.SetVariable("c", $color)
GUICtrlSetBkColor($clabel1, $color)
EndIf
Dieser Code erstellt ein Farbauswahldialog, sobald auf den Label geklickt wurde.
Nachdem die Farbe in $color gespeichert wurde, wird die Hintergrundfarbe des Labels in die Farbe geändert und die Variable "c" vom FlashObjekt wird geändert.
Jetzt solltet ihr die Farbe des Pinsels ändern können.
Das FlashObjekt hat keine Variable, womit ihr die Hintergrundfarbe ändern könnt, jedoch könnt ihr folgendermaßen trotzdem die Hintergrundfarbe ändern.
Dafür erstellt ihr noch ein Label in eurer GUI (vor dem GuiSetState):
If $clabel2=$gMsg Then
$colorchoose=_ChooseColor(2,$color2,2)
If $colorchoose<>-1 Then $color2=$colorchoose
$Obj.bgcolor=StringReplace($color2, "0x","#")
GUICtrlSetBkColor($clabel2, $color2)
EndIf
Durch $Obj.bgcolor wird die Hintergrundfarbe geändert. Beachtet hierbei, dass die Farbe kein Hex-Code (0x.....) sein soll, sondern ein HTML-Code (#.......).
Wenn ihr das habt, vergisst aber nicht ganz oben bei eurem Quelltext die Variable $color2 zu definieren. Schreibt also unter eurem $color = "..." noch folgendes: $color2="0xFFFFFF"; Hintergrundfarbe: Weiß
So sollte es jetzt möglich sein die Hintergrundfarbe des Flashobjektes zu ändern.
Dies erstellt einen Pegel der von 1 bis 50 geht. Der Pegel steht Standardmäßig bei 10 (Pixel).
Die Aktionen kommen wieder vor dem Wend-Befehl und sieht so aus:
AutoIt-Quelltext
If $gMsg = $dicke Then
GUICtrlSetTip($dicke, "Pinselstärke: " & GUICtrlRead($dicke) )
$Obj.SetVariable("d", GUICtrlRead($dicke))
EndIf