Hallo Leute,
Da dies mein erster Post hier im AutoIt.de Forum ist sage ich erst mal hallo!
Ich beschäftige mich nun schon ca. 4 Monate mit AutoIt und bin nun auf GDI+ gestoßen, da ich eine kleine Anwendung die mit Bildern zu tun hat schreibe.
Funktioniert alles wunderbar - wäre da nicht dieses flackern.
Ich verwende jetzt schon einige GDI+ Befehle, wirklich verstehen tu ich sie aber nicht. Habe mich schon durch dutzende Seiten gelesen, auch Tutorials... aber als
Anfänger versteht man meistens schnell nur noch "Bahnhof".
Für jemanden der bereits durchblickt und ein Tut schreibt ist es schwierig etwas für Noobs zu erklären da vieles sowieso (seiner Meinung nach) offensichtlich ist.
Deshalb möchte ich hier für mich selbst (und alle anderen die dies nützlich finden) eine kleine Erklärungs Seite für DAU's (wie mich) erstellen.
Am besten denke ich ist es für Unwissende wenn man Befehle umschreibt. Das macht vieles leichter.
Am Beispiel von CentuCore's Code, welcher der kürzeste Code ist den ich bisher gefunden habe versuche ich aufzuschlüsseln
GDI+ Backbuffer
#include <GDIPlus.au3>; Inkludieren der GDI+ Bibliothek um die GDI+ Befehle nutzen zu können
_GDIPlus_Startup(); Das Graphics Device Interface starten (Microsoft Windows GDI+)
Local $GUI = GUICreate("Fenster", 500, 200); Ein Windows Fenster erzeugen. Titel:Fenster Breite:500 Höhe:200
GUISetState(); Das erzeugte Fenster anzeigen. Standardeinstellung ist (@SW_SHOW
Local $PAPIER = _GDIPlus_GraphicsCreateFromHWND($GUI); SICHTBAR.Ein Grafik Objekt erzeugen. Vorzustellen wie ein leeres Blatt Papier
Local $BILD = _GDIPlus_BitmapCreateFromGraphics(500, 200, $PAPIER); UNSICHTBAR.Ein Bild Objekt erzeugen. Vorzustellen wie ein leeres Gemälde
Local $PUFFER = _GDIPlus_ImageGetGraphicsContext($BILD); UNSICHTBAR.Holt den Inhalt des Bildes $BILD und schreibt ihn in $PUFFER
_GDIPlus_GraphicsDrawString($PUFFER, "Hello World :)", 20, 60, "CONSOLAS", 40); UNSICHTBAT.Text in den Puffer zeichnen
While GUIGetMsg() <> -3; Schleifen Anfang - Solange NICHT der Fenster schließen Knopf gedrückt wurde
_GDIPlus_GraphicsDrawImage($PAPIER, $BILD, 0, 0); SICHTBAR.PUFFER anzeigen
Sleep(50); 50 Millisekunden warten
WEnd; Schleifen Ende
_GDIPlus_GraphicsDispose($PUFFER); Grafik Objekt $PUFFER löschen
_GDIPlus_BitmapDispose($BILD); Bild Objekt $BILD löschen
_GDIPlus_GraphicsDispose($PAPIER); Grafik Objekt $PAPIER löschen
_GDIPlus_Shutdown(); Das Graphics Device Interface beenden
Exit; Das Programm beenden
Alles anzeigen
Ich verstehe nach wie vor nicht genau den Unterschied zwischen:
Graphics
Bitmap
Image
Deshalb weis ich auch nicht genau ob meine Anmerkungen im Code korrekt sind.
Vielleicht hat jemand bessere Umschreibungen, bzw kann den Unterschied zwischen den oben genannten Objekt Typen erklären.
Ich werde dann diesen Post updaten.
Danke