Edit: Xorianator hatte die Lösung in der SB "_GDIPlus_GraphicsSetSmoothingMode" war das Problem
Hi,
erstmal das Script:
Spoiler anzeigen
AutoIt
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
_GDIPlus_Startup()
Local $hGUI = GUICreate("test", 600, 600)
GUISetBkColor(0xb7b8b0, $hGUI) ;set GUI background color
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;create a graphics object from a window handle
Local $hPen = _GDIPlus_PenCreate(0xFFFEDCBA, 1) ;color format AARRGGBB (hex)
Local $hBmp = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphics)
Local $hBuf = _GDIPlus_ImageGetGraphicsContext($hBmp)
_GDIPlus_GraphicsSetSmoothingMode($hBuf, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;sets the graphics object rendering quality (antialiasing)
$county = 0
For $j = 0 To 19 Step 1
$countx = 0
Sleep(20)
For $i = 0 To 19 Step 1
;~ _GDIPlus_GraphicsDrawRect($hBuf, $countx, $county, 30, 30, $hPen)
$erg = Random(0, 1, 1)
If $erg = 1 Then
_GDIPlus_GraphicsFillRect($hBuf, $countx, $county, 30, 30)
EndIf
$countx = $countx + 30
Next
$county = $county + 30
Next
GUIRegisterMsg(0xF, 'WM_PAINT')
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case -5
_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp, 0, 0)
EndSwitch
WEnd
;cleanup GDI+ resources
_GDIPlus_GraphicsDispose($hBuf)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_PenDispose($hPen)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
GUIDelete($hGUI)
Func WM_PAINT()
_GDIPlus_GraphicsDrawImage($hGraphics, $hBmp, 0, 0)
EndFunc ;==>WM_PAINT
Alles anzeigen
Wenn ich es ausführe sieht es so aus:
vorher.jpg
Wenn ich jetzt aber das Fenster außerhalb des Desktops bewege, es reicht auch ein kleines Stück, und wieder zurück in der sichtbaren Bereich bringe sieht es plötzlich so aus:
Daher jetzt zwei Fragen:
1. Warum verändert sich das ganze?
2. Wie bekomme ich es hin, dass das ganze immer wie auf Bild zwei, sprich also nach dem raus und reinschieben aus dem sichtbaren Bereich aussieht?