Hallo liebe AutoIt Community,
ich taste mich momentan an GDI+ ran und hatte vor, einen Text
im GDI Fenster darstellen zu lassen. Dieser soll sich ca. alle 50ms
aktualisieren/neu zeichnen, weshalb ein normales Label dafür
nicht in Frage käme.
Dafür habe ich ein paar Beispiele aus dem Internet zusammengefügt.
Der Text flackert nur leider und ich weiß nicht genau, woran das liegt.
Das importierte Bild (bg_footer) flackert jedoch nicht.
Würde mich über eure Hilfe freuen
AutoIt
#include <GuiConstants.au3>
#include <GdiPlus.au3>;das include
#include <Misc.au3>
OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
_GDIPlus_Startup() ;Gdi starten
Global $GUI_Width = 593
Global $GUI_Height = 400
$sString = "Hallo Welt"
;----Bilder laden---------------------
Global $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "/bg_footer.jpg")
$Gui = GUICreate("GDI+ Beispiel / Tutorial", $GUI_Width, $GUI_Height)
GUICtrlCreateButton("jojo", 50, 50, 100, 20)
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui);Frontbuffer
$bitmap = _GDIPlus_BitmapCreateFromGraphics($GUI_Width, $GUI_Height, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap);Backbuffer
; Draw a string
_GDIPlus_Startup()
$hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
$tLayout = _GDIPlus_RectFCreate(140, 380, 0, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($graphic, $sString, $hFont, $tLayout, $hFormat)
$text = _GDIPlus_GraphicsDrawStringEx($graphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
GUISetState(@SW_SHOW)
Do
_Draw()
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func _end();die Exit funktion
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
;Bilder freigeben
_GDIPlus_ImageDispose($bk)
_GDIPlus_Shutdown();Ressourcen freigeben
EndFunc
Func _Draw()
_GDIPlus_GraphicsClear($buffer);Inhalt des Backbuffer`s wird gelöscht
_GDIPlus_GraphicsDrawImageRect($buffer,$bk, 0, 0,$GUI_Width, 30)
_GDIPlus_GraphicsDrawImageRect($buffer,$text, 0, 0,$GUI_Width, 30)
_GDIPlus_GraphicsDrawStringEx($graphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, $GUI_Height-30) ;Backbuffer wird an den Frontbuffer übergeben
EndFunc
Alles anzeigen