Man benutzt dazu am besten einen BackBuffer. Man zeichnet in diesen Buffer und bei WM_PAINT zeichnet man den Buffer auf die GUI.
Hier mal ein kleines Beispiel dazu:
Spoiler anzeigen
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
_GDIPlus_Startup()
Global $iSize = 30, $iGuiSize = 600
$hGUI = GUICreate('GDI+', $iGuiSize, $iGuiSize)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGuiSize, $iGuiSize, $hGraphic)
$hGraphicBuff = _GDIPlus_ImageGetGraphicsContext($hBitmap)
For $y = 0 To Int($iGuiSize / $iSize) - 1
For $x = 0 To Int($iGuiSize / $iSize) - 1
_GDIPlus_GraphicsDrawRect($hGraphicBuff, $x * $iSize, $y * $iSize, $iSize, $iSize)
Next
Next
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
[/autoit] [autoit][/autoit] [autoit]Do
Until GUIGetMsg() = -3
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphicBuff)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
EndFunc ;==>WM_PAINT