Hey hey,
ich wollte mich mal bischen mit GDI+ beschäftigen aber fand zu meinem problem keine lösung. undzwar sollte es so aussehen:
von einem bestimmten punkt aus, wird eine linie in richtung der maus gezogen und wenn sich die maus position ändert, zieht die linie mit.
problem ist hier, dass die alten schon gezeichneten linien bestehen bleiben und das soll nicht sein.
hab die gui aus diesem forum übernommen und dann mein teil versucht:
Spoiler anzeigen
#include <Misc.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
Local $hDLL, $hGUI, $hPen, $hBitmap, $aMPos_Aktuell, $aMPos_neu, $mPosOL, $mPosUR
_GDIPlus_Startup()
$hDLL = DllOpen("user32.dll")
HotKeySet("{ESC}","_Exit")
$hDummy = GUICreate("")
$hGUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST,$WS_EX_TRANSPARENT),$hDummy)
GUISetBkColor(0xABCDEF, $hGUI)
_WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255)
$hPen = _GDIPlus_PenCreate(0xFFFF0000,3)
$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hGraphics)
$hBackBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
GUISetState()
While Sleep(10)
$aMPos_Aktuell = MouseGetPos()
If _IsPressed(61) Then $mPosOL = MouseGetPos()
If _IsPressed(62) Then $mPosUR = MouseGetPos()
If IsArray($mPosOL) And IsArray($mPosUR) Then
_GDIPlus_GraphicsDrawRect($hGraphics, $mPosOL[0], $mPosOL[1], $mPosUR[0]-$mPosOL[0], $mPosUR[1]-$mPosOL[1], $hPen)
_GDIPlus_GraphicsDrawLine($hGraphics, (($mPosUR[0]-$mPosOL[0])/2)+$mPosOL[0], $mPosUR[1], $aMPos_Aktuell[0], $aMPos_Aktuell[1], $hPen)
$aMPos_neu = MouseGetPos()
If $aMPos_Aktuell[0] <> $aMPos_neu[0] Or $aMPos_Aktuell[1] <> $aMPos_neu[1] Then
;_WinAPI_RedrawWindow($hGUI)
;_GDIPlus_GraphicsClear($hBackBuffer)
$aMPos_Aktuell = $aMPos_neu
EndIf
EndIf
WEnd
Func _Exit()
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_PenDispose($hPen)
GUIDelete($hGUI)
DllClose($hDLL)
Exit
EndFunc
Alles anzeigen
steuerung: numpad1 drucken (oben links aufn bildschirm) und numpad2 (unten rechts)
wie gesagt, hab mich eig. nie wirklich mit gdi+ beschäftigt und wollte mal bischen rum testen..
ich dachte _GDIPlus_GraphicsClear($hBackBuffer) würde reichen, aber leider passiert damit irgentwie nichts...
wenn ich _WinAPI_RedrawWindow($hGUI) benutze, flackert alles... dazu muss man nen doppelbuffer(?) benutzen, soweit ich gelesen habe..
da hier im forum sehr viel mit GDI+ gecodet wird, könnt ihr mir sicher helfen.
MfG
omer36