ich wollte euch meine Methode zeigen wie man ganz einfach auf den Bildschirm malen kann mit GDI+. Was man dazu braucht ist eine 1x1 Pixel große .gif Datei mit der Farbe 00FF00 (Rot: 0 , Grün: 255, Blau: 0). Diese Datei benutzen wir als "Green Screen" und schneiden sie später aus unserer GUI. (
)Nun zum Code:
1.) GUI erstellen
Es muss nur eine ganz simple GUI mit einem Bild das über die ganze Fläche der GUI geht erstellt werden. Als Flags nehmen wir $WS_POPUP,$WS_EX_TOPMOST und $WS_EX_LAYERED. Hier kommt unsere gif Datei zum Einsatz die wir als Bild benutzen.
Code:
$Form1 = GUICreate("", 10, 10, 192, 124, [COLOR="Green"]$WS_POPUP,BitOR($WS_EX_LAYERED,$WS_EX_TOPMOST)[/COLOR])
$Pic1 = GUICtrlCreatePic("bg.gif", 0, 0, 10, 10)
GUISetState(@SW_SHOW)
Für das ausschneiden der Grünen Farbe und das Benutzen der GDI+ benötigen wir folgende zwei Includes die wir an den Anfang unseres Scriptes setzen.
Code:
#include <GDIPlus.au3> #include <WinApi.au3>
Hierfür stellt uns die WinApi eine Funktion zur Verfügung die als ersten Parameter das Fenster Handle und als zweiten die Farbe fordert.
Code:
_WinAPI_SetLayeredWindowAttributes($Form1, 0x00FF00)
0x00FF00 = Die Farbe der gif Datei: Grün
Code:
#include <GDIPlus.au3>
#include <WinApi.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 10, 10, 192, 124, $WS_POPUP, BitOR($WS_EX_LAYERED,$WS_EX_TOPMOST))
$Pic1 = GUICtrlCreatePic("bg.gif", 0, 0, 10, 10)
_WinAPI_SetLayeredWindowAttributes($Form1, 0x00FF00)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Nun müssen wir nur noch malen
D.h. GDI starten, Graphik initialisieren und unsere gewünschte Form malen.
Code:
_GDIPlus_Startup() $Handle = _GDIPlus_GraphicsCreateFromHWND($Form1) _GDIPlus_GraphicsDrawRect($Handle,0,0,9,9) While 1 Sleep(300) WEnd _GDIPlus_Shutdown()
Code:
_GDIPlus_GraphicsDrawRect($Handle,0,0,9,9)
Code:
#include <GDIPlus.au3>
#include <WinApi.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("", 10, 10, 192, 124, $WS_POPUP, BitOR($WS_EX_LAYERED,$WS_EX_TOPMOST))
$Pic1 = GUICtrlCreatePic("bg.gif", 0, 0, 10, 10)
_WinAPI_SetLayeredWindowAttributes($Form1, 0x00FF00)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
_GDIPlus_Startup()
$Handle = _GDIPlus_GraphicsCreateFromHWND($Form1)
_GDIPlus_GraphicsDrawRect($Handle,0,0,9,9)
While 1
Sleep(300)
WEnd
_GDIPlus_Shutdown()
Wollen wir mehrere Sachen malen würde unser Fenster schnell voll werden also löschen wir bevor wir etwas neues kreieren erstmal das alte mit
Code:
_WinAPI_RedrawWindow($Form1)
Ich danke Achat für sein Tutorial :
da es mich auf die Idee gebracht hat.






