Graphics Objekt von Control

  • Hi,

    ich hab eine Frage:

    Wie kann ich ein Gdi+ Graphics Objekt von einem Control erstellen anstatt vom ganzen Fenster?

    Mein Versuch:

    [autoit]


    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hGraphic, $hPen, $hEdit, $hDC

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

    $hGUI = GUICreate("GDI+", 400, 200)
    $hEdit = GUICtrlCreateEdit("", 30, 30, 340, 70, 0x08000000)
    GUISetState()

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

    _GDIPlus_Startup()
    $hDC = _WinAPI_GetWindowDC($hEdit)
    $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hDC)
    $hPen = _GDIPlus_PenCreate()
    _GDIPlus_GraphicsDrawLine($hGraphic, 50, 120, 360, 120, $hPen)

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

    Do
    Until GUIGetMsg() = -3

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

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _WinAPI_ReleaseDC($hGUI, $hDC)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Main

    [/autoit]

    MfG

  • Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hGraphic, $hPen, $hEdit, $hDC

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

    $hGUI = GUICreate("GDI+", 400, 200)
    $hEdit = GUICtrlCreateEdit("", 30, 30, 340, 70, 0x08000000)
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($hEdit))
    $hPen = _GDIPlus_PenCreate(0xFF0000FF)
    _GDIPlus_GraphicsDrawLine($hGraphic, 10, 10, 50, 50, $hPen)

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

    Do
    Until GUIGetMsg() = -3

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

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _WinAPI_ReleaseDC($hGUI, $hDC)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Main

    [/autoit]
  • Mit ControlGetHandle gehts doch auch:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    Opt('MustDeclareVars', 1)

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hGraphic, $hPen, $hEdit

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

    $hGUI = GUICreate("GDI+", 400, 200)
    $hEdit = GUICtrlCreateEdit("", 30, 30, 340, 70, 0x08000000)
    GUISetState()

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND(ControlGetHandle($hGUI, "", $hEdit))
    $hPen = _GDIPlus_PenCreate(0xFF0000FF)
    _GDIPlus_GraphicsDrawLine($hGraphic, 10, 10, 50, 50, $hPen)

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

    Do
    Until GUIGetMsg() = -3

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

    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Main

    [/autoit]