Hallo und herzlich willkommen zu diesem Tutorial.
Hier geht es um die Grafikengine Quickdraw von moritz1243, die 100 mal schneller und für Anfänger leichter ist als GDI+.
Grundlagen
Mann braucht nicht viel um mit Quickdraw zu arbeiten.
*Natürlich AutoIt(möglichst die neuste Version)
*Grundlegende AutoIt Kenntnisse
*Quickdraw (Bitte beide Parts downloaden)
Dann nur noch entpacken und im Quickdrawordner ein neues AutoItscritp erstellen und los gehts.
Arbeiten mit Quickdraw
Linie zeichnen
Da mann am Anfang immer leicht Anfängt, zeichnen wir mal eine einfache Linie.
Und das geht so
[autoit]#include "QuickDraw.au3"
[/autoit][autoit][/autoit][autoit]_QuickDraw_Enable("Quickdraw Tutorial",500,500,200,200,False) ; Quickdraw Fenster erstellen
[/autoit][autoit][/autoit][autoit][/autoit][autoit]While _QuickDraw_Running() ; Gibt 1 zurück wenn Quickdraw läuft 0 wenn nicht
Sleep(10) ; Damit die Prozessorlast nicht zu hoch wird
_QuickDraw_ClearBuffer(0xFFFFFFFF) ;Denn Ausgabepuffer leeren und Weiß anmalen
_QuickDraw_Line(50,50,100,100,0xFF000000) ; Die Linie zeichnen
_QuickDraw_SwapBuffers() ; Von dem Backpuffer in den Frontpuffer zeichnen
WEnd
_QuickDraw_Disable() ; Das Fenster schließen und Resourcen aus dem Speicher laden
Neue Befehle
;## _QuickDraw_Enable
; Parameter #1 Name des Fensters
; Parameter #2 Breite des Fenster
; Parameter #3 Höhe des Fensers
; Parameter #4 X Position des Fenseers
; Parameter #5 Y Positin des Fensers
; Parameter #6 False für Fenstermodus True für Vollbild
;## _QuickDraw_Running
; Keine Parameter
;## _QuickDraw_ClearBuffer
; Hex Farbe
;## _QuickDraw_Line
; Parameter #1 Name des X Position von Linienanfang
; Parameter #2 Name des Y Position von Linienanfang
; Parameter #3 Name des X Position von Linienende
; Parameter #4 Name des Y Position von Linienende
;## _QuickDraw_SwapBuffers
; Keine Parameter
;## _QuickDraw_Disable
; Keine Parameter
Wer nicht weiß was Front und Backpuffer ist der sollte sich merken: das die Doppelpuffertechnik eine kontinuierlichen Bildfrequenz ohne Flackern ermöglicht.
Draw_Type und neue Objekte
Als nächstes kommen wir zu dem Draw_Type Parameter und neuen Objekten.
#include "QuickDraw.au3"
[/autoit][autoit][/autoit][autoit]_QuickDraw_Enable("Quickdraw Tutorial",500,500,200,200,False) ; Quickdraw Fenster erstellen
[/autoit][autoit][/autoit][autoit]While _QuickDraw_Running()
Sleep(10)
_QuickDraw_ClearBuffer(0xFFFFFFFF)
_QuickDraw_Line(50,50,100,100,0xFF000000)
_QuickDraw_Rect(150,150,50,60,$Draw_Fill,0xFF000000); Ein gefülltes Rechteck zeichnen
_QuickDraw_Rect(250,150,50,60,$Draw_Line,0xFF000000) ; Rechteck zeichnen (ungefüllt nur linien)
_QuickDraw_Circle(50,150,50,$Draw_Line,0xFF000000); Ein Kreis zeichnen (ungefüllt)
_QuickDraw_SwapBuffers()
WEnd
_QuickDraw_Disable()
Neue Befehle
;## _QuickDraw_Rect
; Parameter #1 X Position des Rechtecks
; Parameter #2 Y Position des Rechtecks
; Parameter #3 Breite des Rechtecks
; Parameter #4 Höhe des Rechtecks
; Parameter #5 DrawType
; Parameter #6 Hex Farbe die zum Zeichnen genutzt werden soll
;## _QuickDraw_Circle
; Parameter #1 X Position des Kreises
; Parameter #2 Y Position des Rechtecks
; Parameter #3 Radius des Kreises
; Parameter #4 Draw Type
;; Parameter #5 Hex Farbe zum zeichnen
Wie mann im Beispiel sieht gibt der DrawType an wie ein Objekt gezeichnet werden soll.
$Draw_Fill : Das Objekt wird gefüllt gezeichnet
$Draw_Line : Nur die Ränder werden gezeichnet
Text zeichnen
Nachdem wir nun Linien, Kreise und Rechtecke zeichnen können kommen wir nun zu etwas Text.
#include "QuickDraw.au3"
[/autoit][autoit][/autoit][autoit]_QuickDraw_Enable("Quickdraw Tutorial", 500, 500, 200, 200, False) ; Quickdraw Fenster erstellen
[/autoit][autoit][/autoit][autoit]$hFont = _QuickDraw_CreateFont("Times New Roman") ;Lädt die Schriftart Times New Roman
[/autoit][autoit][/autoit][autoit]While _QuickDraw_Running()
Sleep(10)
_QuickDraw_ClearBuffer(0xFFFFFFFF)
_QuickDraw_Text(50, 50, "Ich bin ein Text!", 20, $hFont, $Draw_Fill, 0xFF000000) ; Zeichnet einen Text
_QuickDraw_SwapBuffers()
WEnd
_QuickDraw_FreeFont($hFont) ; Die Schriftart aus dem Speicher laden
_QuickDraw_Disable()
Neue Befehle
;## _QuickDraw_CreateFont
;###Rückgabe: ein Handle zu der Schiftart
; Parameter #1 Name der Schriftart
; Parameter #2 legt fest ob die Schift kursiv gezeichnet werden soll (True um kursiv zu zeichnen)
; Parameter #3 legt fest ob die Schift unterstrichen gezeichnet werden soll
; Parameter #4 legt fest ob die Schift durchgestrichen gezeichnet werden soll
;## _QuickDraw_Text
; Parameter #1 X Position für den Text
; Parameter #2 Y Positin für den Text
; Parameter #3 Der zu Zeichnende Text
; Parameter #4 Schriftgröße
; Parameter #5 ein Handle zu einer geladenen Font (Rückgabe von _QuickDraw_CreateFont)
; Parameter #6 DrawType (sollte immer auf $Draw_Fill stehen damit es vernünftig gezeichnet wird)
; Parameter #7 Hex Farbe
;## _QuickDraw_FreeFont
; Parameter #1 ein Handle zu einer geladenen Font (Rückgabe von _QuickDraw_CreateFont)
Wie ihr seht ist das Texte zeichnen viel kürzer und einfacher als mit GDI+. Ein guter ansporn um weiterzu lesen oder ;).
Quad und Polygon
Nur zur Erklärung mit einem Quad kann man unregelmäßige Rechtecke zeichnen und mit einem Polygon n-Ecke.
#include "QuickDraw.au3"
[/autoit][autoit][/autoit][autoit]_QuickDraw_Enable("Quickdraw Tutorial", 500, 500, 200, 200, False)
[/autoit][autoit][/autoit][autoit]Dim $aPolygon1[3][2] = [[10, 10], _ ;Einen Array mit Koordinaten Füllen
[20, 75], _
[100, 120]]
$hFont = _QuickDraw_CreateFont("Arial")
While _QuickDraw_Running()
Sleep(10)
_QuickDraw_ClearBuffer(0xFFFFFFFF)
_QuickDraw_Text(0, 20, "Polygon", 20, $hFont, $Draw_Fill, 0xFF000000)
_QuickDraw_Polygon(20, 20, $aPolygon1, 3, $Draw_Line, 0xFF000000);Zeichnet das Polygon
_QuickDraw_Text(200, 20, "Quad", 20, $hFont, $Draw_Fill, 0xFF000000)
_QuickDraw_Quad(240, 50, 270, 70, 280, 70, 230, 80, $Draw_Line, 0xFF000000);Zeichnet das Polygon
_QuickDraw_SwapBuffers()
WEnd
_QuickDraw_FreeFont($hFont)
_QuickDraw_Disable()
Neue Befehle
;## _QuickDraw_Polygon
; Parameter #1 X Position von dem Polygon
; Parameter #2 Y Positin von dem Polygon
; Parameter #3 Koordinaten Array (Muss 2 Dimensional sein bsp: [0][0] = X [0][1] = Y)
; Parameter #4 Anzahl wie viele Koordinaten verarbeitet, gezeichnet werden sollen
; Parameter #5 Draw Type
; Parameter #6 Hex Farbe
;## _QuickDraw_Quad
; Parameter #1 X Position vom Punkt oben Links
; Parameter #2 Y Position vom Punkt oben Links
; Parameter #3 X Position vom Punkt Rechts oben
; Parameter #4 Y Position vom Punkt Rechts oben
; Parameter #5 X Position vom Punkt unten Rechts
; Parameter #6 Y Position vom Punkt unten Rechts
; Parameter #7 X Position vom Punkt unten Links
; Parameter #8 Y Position vom Punkt unten Links
; Parameter #9 Draw Type
; Parameter #10 Hex Farbe
Eigentlich recht nützliche Befehle aber wenn wir uns mal das Quad ansehen dann wirds auf dauer ziemlich unnübersichtlich mit den vielen Parametern.
Wird fortgesetzt