Hier mal eine kleine Funktion:
[autoit]; #FUNCTION# ====================================================================================================================
; Name ..........: _StringWidth
; Description ...: Return the Width of a Label containing the given string
; Syntax ........: _StringWidth($sString)
; Parameters ....: $sString - A string value.
; Return values .: Width in px
; Author ........: minx
; ===============================================================================================================================
Func _StringWidth($sString)
$hGUI = GUICreate($sString,0,0)
GUISetState(@SW_HIDE, $hGUI)
$Ref = GUICtrlCreateLabel($sString,0,0)
$aPos = ControlGetPos($sString, "", $Ref)
GUIDelete($hGUI)
Return $aPos[2]
EndFunc
Und hier ein Beispiel:
Spoiler anzeigen
#include <Math.au3>
#include <String.au3>
#include <StaticConstants.au3>
$Formel = "\frac {1 - 20|(90 + 2x) · 30}"
$Left = 50
$Top = 100
$GUI = GUICreate("Math Test", 500, 500)
GUISetState()
$aString = StringSplit(_SSB($Formel, "\frac {", "}"), "|", 1); Zähler und Nenner herausfinden
$Length = _Max(_StringWidth($aString[1]), _StringWidth($aString[2])) ; Größen des Zählers und Nenners herausfinden, und die größte wiedergeben
GUICtrlCreateLabel($aString[1], $Left, $Top, $Length, 13, $SS_CENTER) ; Zähler
GUICtrlCreateLabel("", $Left, $Top+13, $Length, 1); Bruchstrich
GUICtrlSetBkColor(-1,0)
GUICtrlCreateLabel($aString[2], $Left, $Top+14, $Length, 20, $SS_CENTER); Nenner
Do
Until GUIGetMsg() = -3
; #FUNCTION# ====================================================================================================================
; Name ..........: _StringWidth
; Description ...: Return the Width of a Label containing the given string
; Syntax ........: _StringWidth($sString)
; Parameters ....: $sString - A string value.
; Return values .: Width in px
; Author ........: minx
; ===============================================================================================================================
Func _StringWidth($sString)
$hGUI = GUICreate($sString,0,0)
GUISetState(@SW_HIDE, $hGUI)
$Ref = GUICtrlCreateLabel($sString,0,0)
$aPos = ControlGetPos($sString, "", $Ref)
GUIDelete($hGUI)
Return $aPos[2]
EndFunc
Func _SSB($String, $S, $E)
$aString = _StringBetween($String, $S, $E)
Return $aString[0]
EndFunc