_GDIPlus_GraphicsDrawRect, Bereiche markieren

  • Hallo liebe Forengemeinde!
    Nach langer Zeit melde ich mich auch mal wieder und -wer hätte es gedacht- habe ich auch gleich eine Frage parat.

    Und zwar habe ich ein GUI, in dem ich ein Bild mit Hilfe von GDI+ anzeigen lasse.
    Nun möchte ich, dass der Nutzer Bereiche auf dem Bild mit Rechtecken umranden soll.
    Mit einem Klick auf das Bild wird der organg bei entsprechenden Koordinaten gestartet, dann wird die Mouse zum Endpunkt bewegt und noch einmal geklickt. Währenddessen soll jedoch angezeigt werden, wie das Rechteck im Moment aussehen würde.
    Ich habe mir auch schon eine Funktion geschrieben, die die X und Y Koordinaten des Startpunktes als Übergabewerte hat und diese zeichnet mir das Rechteck auch schon.
    Jedoch ist es leider sehr langsam und ich wollte euch mal fragen, ob ihr vielleicht eine schnellere Methode kennt...

    Hier mein jetziger Code:

    [autoit]


    Func _Zeichne_Rechteck($xs, $ys)
    $last_x = $xs
    $last_y = $ys
    _GDIPlus_GraphicsDrawRect($graphic, $xs, $ys, 1, 1)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_PRIMARYDOWN
    $rechtecke[0][0] = $rechtecke[0][0] + 1
    $TPoint = _WinAPI_GetMousePos(True, $Form1)
    $x = DllStructGetData($TPoint, "X")
    $y = DllStructGetData($TPoint, "Y")
    $rechtecke[$rechtecke[0][0]][0] = $xs
    $rechtecke[$rechtecke[0][0]][1] = $ys
    $rechtecke[$rechtecke[0][0]][2] = $x
    $rechtecke[$rechtecke[0][0]][3] = $y
    ExitLoop
    EndSwitch
    $TPoint = _WinAPI_GetMousePos(True, $Form1)
    $x = DllStructGetData($TPoint, "X")
    $y = DllStructGetData($TPoint, "Y")
    If $x>=16 And $x<=($width+16) And $y>=16 And $y<=($height+16) And $x <> $last_x And $y <> $last_y Then
    _GDIPlus_GraphicsDrawImageRect($graphic,$image,16,16,$width,$height)
    ;_Graph_Update()
    _GDIPlus_GraphicsDrawRect($graphic, $xs, $ys, $x-$xs, $y-$ys, $rot_pen)
    $last_x = $x
    $last_y = $y
    EndIf
    WEnd
    EndFunc

    [/autoit]