Hallo
Ich habe heute mal wieder kleines GDI problem bzw ein Problem mit dem ReDraw.
Er zeichnet das fenster nicht neu wenn ich es dem Anzeigebereich schiebe oder ein anderes Fenster überlapt.
Spoiler anzeigen
;[includes]
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
; Script Start
Global $hGUI
_Preview()
Func _Preview()
Local $sFaktor = 4 ,$Papierwidth = 2100,$Papierheight = 2950
Local $BlattX = 10, $BlattY = 10
Local $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout
$hGUI = GUICreate("Vorschau", 600, 800, -1, -1)
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
$hBrushweis = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$hBrushschwarz = _GDIPlus_BrushCreateSolid(0xFF000000)
_GDIPlus_GraphicsFillRect($hGraphic, $BlattX -1, $BlattY -1, $Papierwidth / $sFaktor +5, $Papierheight/ $sFaktor +5,$hBrushschwarz) ; Rahmen für Blatt Papier
_GDIPlus_GraphicsFillRect($hGraphic, $BlattX, $BlattY, $Papierwidth / $sFaktor, $Papierheight/ $sFaktor,$hBrushweis) ; Blatt Papier
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
$tLayout = _GDIPlus_RectFCreate(140, 110, 100, 20)
_GDIPlus_GraphicsDrawStringEx($hGraphic, "Hallo Welt", $hFont, $tLayout, $hFormat, $hBrushschwarz)
Do
Sleep(30)
Until GUIGetMsg() = $GUI_EVENT_CLOSE
; Ressourcen freigeben
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrushschwarz)
_GDIPlus_BrushDispose($hBrushweis)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
EndFunc
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGUI)
EndFunc ;==>WM_PAINT
Ist meine denkweise schon wieder falsch? oder sehe ich den Wald vor lauter Bäumen nicht.
Vielen dank im vorraus
Gummibaer