GDI+ String zentrieren

  • Ich versuche vergeblich den Text im Button zu zentrieren das er sich Linksbündig anordnet habe ich so geschaft leider gibt es keine zentrierungsformat

    Linksbündig:

    [autoit]

    $hFormat = _GDIPlus_StringFormatCreate(0x0001)

    [/autoit]

    wie kann man den Text zentrieren?

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GDIP.au3>

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

    Global $Title = "Example"
    Global $Width = 500
    Global $Height = 500

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

    $Form = GUICreate($Title, $Width, $Height)

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

    _GDIPlus_Startup()
    $Graphic = _GDIPlus_GraphicsCreateFromHWND($Form)
    $Bitmap = _GDIPlus_BitmapCreateFromGraphics($Width, $Height, $Graphic)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
    $Brush1 = _GDIPlus_LineBrushCreate(0, 0, 0, 25, 0xFFFAFAFA, 0xFFE7E7E7)
    $Brush2 = _GDIPlus_LineBrushCreate(0, 0, 0, 25, 0xFFFDFDFD, 0xFFE9E9E9)
    $Brush3 = _GDIPlus_BrushCreateSolid(0xFF555555)
    $Brush4 = _GDIPlus_BrushCreateSolid(0xFF222222)
    $Pen1 = _GDIPlus_PenCreate(0xFFAAAAAA)
    $Pen2 = _GDIPlus_PenCreate(0xFF999999)
    $Pen3 = _GDIPlus_PenCreate(0xFFE0E0E0)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    _GDIPlus_PenDispose($Pen1)
    _GDIPlus_PenDispose($Pen2)
    _GDIPlus_PenDispose($Pen3)
    _GDIPlus_BrushDispose($Brush1)
    _GDIPlus_BrushDispose($Brush2)
    _GDIPlus_BrushDispose($Brush3)
    _GDIPlus_BrushDispose($Brush4)
    _GDIPlus_ImageDispose($Buffer)
    _GDIPlus_BitmapDispose($Bitmap)
    _GDIPlus_GraphicsDispose($Graphic)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    _GDIPlus_GraphicsClear($Buffer, 0xFFFFFFFF)
    Button(100, 100, 200, 22, "Hallo Welt")
    _GDIPlus_GraphicsDrawImage($Graphic, $Bitmap, 0, 0)
    WEnd

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

    Func Button($Left, $Top, $Width, $Height, $Text)

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

    If Pos($Left, $Top, $Width, $Height) = True Then
    $Brush = $Brush2
    $Pen = $Pen2
    $Color = $Brush4
    _GDIPlus_GraphicsDrawLine($Buffer, $Left - 1, $Top + 1, $Left - 1, $Top + $Height - 1, $Pen3)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + $Width + 1, $Top + 1, $Left + $Width + 1, $Top + $Height - 1, $Pen3)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + 1, $Top - 1, $Left + $Width - 1, $Top - 1, $Pen3)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + 1, $Top + $Height + 1, $Left + $Width - 1, $Top + $Height + 1, $Pen3)
    Else
    $Color = $Brush3
    $Brush = $Brush1
    $Pen = $Pen1
    EndIf

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

    _GDIPlus_GraphicsFillRect($Buffer, $Left + 1, $Top + 1, $Width - 1, $Height - 1, $Brush)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left, $Top + 1, $Left, $Top + $Height - 1, $Pen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + $Width, $Top + 1, $Left + $Width, $Top + $Height - 1, $Pen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + 1, $Top, $Left + $Width - 1, $Top, $Pen)
    _GDIPlus_GraphicsDrawLine($Buffer, $Left + 1, $Top + $Height, $Left + $Width - 1, $Top + $Height, $Pen)

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

    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 13, 0)
    $tLayout = _GDIPlus_RectFCreate($Left, $Top, $Width, $Height)
    $aInfo = _GDIPlus_GraphicsMeasureString($Buffer, $Text, $hFont, $tLayout, $hFormat)

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

    _GDIPlus_GraphicsDrawStringEx($Buffer, $Text, $hFont, $aInfo[0], $hFormat, $Color)
    EndFunc ;==>Button

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

    Func Pos($Left, $Top, $Width, $Height)
    $Pos = GUIGetCursorInfo($Form)
    If $Pos[0] >= $Left And $Pos[0] <= $Left + $Width And $Pos[1] >= $Top And $Pos[1] <= $Top + $Height Then Return True
    EndFunc ;==>Pos

    [/autoit]

    Einmal editiert, zuletzt von gem (24. November 2011 um 19:30)