_gdiplus_graphicsdrawstringex() bewegen

  • Hi,
    ich würde gerne mit GDI+ einen StringEx zeichnen, der dann immer der Maus folgt.

    Gedanke:
    Bei _gdiplus_brushcreatesolid() kann man ja mit _gdiplus_brushsetsolidcolor() (oder so ;)) die Farbe im Nachhinein verändern.


    Meine Frage:

    Gibt es für _gdiplus_RectFCreate() etwas in diesem Sinne ähnliches, wo man die Position im Nachhinein noch ändern kann? Oder gibt es sont eine Lösung; denn mir fällt irgendwie einfach nichts ein.

    Für Antworten und Hilfe bedanke ich mich schon mal im Vorraus.

  • Ich wusste nicht wie ich es erklären sollte, also hab ich dir ein Beispiel gemacht (Das war gelogen, ich hatte nur nichts besseres zu tun :P).
    Ich denke das löst das Problem. :)

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 2)

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = 400
    $iGUIHeight = 400
    $iX = 50
    $iY = 50
    $sString = "AutoIt"

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight)
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 12, 2)
    $tLayout = _GDIPlus_RectFCreate(50, 50, 100, 50)
    $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    While Sleep(20)
    $aMousePos = MouseGetPos()
    $iX = $aMousePos[0]
    $iY = $aMousePos[1]
    DllStructSetData($tLayout, "x", $iX)
    DllStructSetData($tLayout, "y", $iY)
    _GDIPlus_GraphicsClear($hBuffer, $iGUIColorBG)
    _GDIPlus_GraphicsDrawStringEx($hBuffer, $sString, $hFont, $tLayout, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $iGUIWidth, $iGUIHeight)
    WEnd

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]