Verschiedene Bildschirmauflösungen

  • Hi,

    ich habe mir eine GUI gebastelt mit z.B. einen Button und ein
    Label. Bei einer Auflösung von 1024x768 sieht auch alles wunderbar
    aus. Nun nehme ich die gleiche GUI bei einer Auflösung von 1280x1024
    und die Schrift auf dem Button ist zu groß, genauso wie auf dem Label.
    Das heißt man sieht vom Text nur ein Teil, der andere ist einfach abgeschnitten. Gibt es da irgendeine dynamische Lösung für die
    Anpassung?

    cu
    KKthunder

  • Ich habe mir mal diese Funktion dazu geschrieben, damit ist der Text auch noch gleich wenn auf dem Rechner die dPi verändert wurden, das wird gerne auf Notebooks gemacht um die Schrift grösser zu bekommen.

    Spoiler anzeigen
    [autoit]


    ; ################################################################
    Func _iCalcFontSize()
    ; -> gloabl things needed all the time for GUI
    Global $AppliedDPI = 96
    Global $FontSize, $iFontSize1, $FontSize1, $iFontSize = 9
    Global $iFontSize10 = 10

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

    ; OS depending
    If @OSVersion = "WIN_95" Then
    $AppliedDPI = RegRead("HKEY_LOCAL_MACHINE\Config\0001\Display\Settings","DPILogicalX")
    ElseIf @OSVersion = "WIN_98" Then
    $AppliedDPI = RegRead("HKEY_LOCAL_MACHINE\Config\0001\Display\Settings","DPILogicalX")
    ElseIf @OSVersion = "WIN_ME" Then
    $AppliedDPI = RegRead("HKEY_LOCAL_MACHINE\Config\0001\Display\Settings","DPILogicalX")
    ElseIf @OSVersion = "WIN_NT4" Then
    FileInstall("C:\Programme\AutoIt310\psapi.dll",@WindowsDir & "\psapi.dll",0)
    $AppliedDPI = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontDPI","LogPixels")
    ElseIf @OSVersion = "WIN_2000" Then
    $AppliedDPI = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontDPI","LogPixels")
    ElseIf @OSVersion = "WIN_XP" Then
    $AppliedDPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","AppliedDPI")
    ElseIf @OSVersion = "WIN_2003" Then
    $AppliedDPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","AppliedDPI")
    Else ; if nothing good is found
    $AppliedDPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics","AppliedDPI")
    EndIf

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

    ; calculate the fontsize depending on DPI-Setting
    If $AppliedDPI < 75 Then
    $AppliedDPI = 96
    EndIf
    $AppliedDPI = ($AppliedDPI * 100) ; calculate percent
    $AppliedDPI = ($AppliedDPI / 96) ; calculate percent
    $AppliedDPI = (9 / $AppliedDPI * 110) ; calculate fontsize add 10%
    $iFontSize1 = Round($AppliedDPI,1) ; round fontsize to one Digit
    $iFontSize10 = $iFontSize + 1

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

    ; -> calculate textsize for new GUI and coordinates of the Dialogs
    $FontSize = ($iFontSize1 / 1.08)
    $FontSize1 = ($FontSize-0.16)
    ; -> coordinates of the Dialogs to avoid jumping Dialogs when a new Dialog is open
    Global $WindowPos = _WindowPosArrayCreate("0","-1","-1")

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

    EndFunc
    ; ================================================================

    [/autoit]

    Hiermit setze ich dann den Text in den Dialogen:
    GUISetFont ($FontSize1)
    Die Werte im UDF sehen etwas "wild" aus, die haben mit einigem probieren hinbekommen so das bei veschiedenen dPI-Einstellungen die Texte immer gleich groß sind.

    edit by Gun-Food: [ autoit] bbcode bitte verwenden! Danke

    Viele Grüsse
    HeiWoMa

    Einmal editiert, zuletzt von HeiWoMa (19. Oktober 2006 um 18:51)

  • Da werde ich mich mal durchwuseln.

    Erstmal besten Dankl, für die schnelle Antwort , ich meld mich dann ob es geklappt hat.
    :musik2:

    CU

    KKThunder