GDIPlus Viereck löschen

  • Hallo,
    ist es möglich das Viereck in dem Script richtig zu löschen, ohne es zu übermalen?

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    Local $hGUI, $hWnd, $hGraphic, $hPen, $Graphic

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GDI+", 320, 320)
    $hWnd = WinGetHandle("GDI+")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hPen = _GDIPlus_PenCreate(0xFFFF0000)
    _GDIPlus_PenSetWidth($hPen, 7)
    $Graphic = _GDIPlus_GraphicsDrawRect($hGraphic, 20, 20, 280, 280, $hPen)
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Natürlich ist das Möglich! Wobei ich mit jetzt verkneife, die Sinnhaftigkeit von "richtig zu löschen, ohne es zu übermalen" im Bezug auf jegliches Verständnis für grafisches Arbeiten am PC zu erörtern...

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GDIPlus.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    Local $hGUI, $hWnd, $hGraphic, $hPen, $Graphic

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GDI+", 320, 320)
    $hWnd = WinGetHandle("GDI+")
    $btn_del = GUICtrlCreateButton("Löschen",130,120,60,30)
    $btn_draw= GUICtrlCreateButton("Zeichnen",130,170,60,30)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hPen = _GDIPlus_PenCreate(0xFFFF0000)
    _GDIPlus_PenSetWidth($hPen, 7)

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case -3
    Exitloop
    Case $btn_draw
    $Graphic = _GDIPlus_GraphicsDrawRect($hGraphic, 20, 20, 280, 280, $hPen)
    Case $btn_del
    _WinAPI_RedrawWindow($hgui)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Main

    [/autoit]

    "

  • Zitat

    Dabei wir ja auch nur übermalt.

    Deshalb in meinem vorigen Post der Nebensatz....
    "Löschen" heisst in der "Computersprache", daß Bits mit einem Wert von 1 durch einen Wert von 0 ersetzt werden. Übertragen auf eine Computergrafik heisst das, alles "gelöschte" ist nachher schwarz. Sinn beim Topic bzw der dortigen Frage?! Keiner....

    "Wasch mich, aber mach mich nicht nass!" Übertragen auf das Topic, es soll etwas gemacht werden ohne etwas zu machen....aha....