GUI an Desktopgrösse anpassen

  • Hallo ,

    gibt es eine möglichkeit die Parameter der Schriftgrösse , Buttongrösse und Labelgrösse an die Auflösung des Desktops anzupassen .

    Ich arbeite einmal mit einem Touchscreen 800x600 Auflösung und einem TV 1920x1080 Auflösung .

    Die GUI's sind für den Touchscreen optimiert und sehen auf dem TV sehr klein aus .

    Die grösse der GUI wird durch Destophigh und Desktopwidth Bildschirmfüllend angepasst , aber ich möchte die Schriftgrösse , die Labelgrösse in bezug

    auf die Schriftgrösse und die Buttongrösse automatisch anpassen .

    Also alle Parameter im Script durch Variablen ersetzen und am Anfang durch auslesen der momentanen Desktopgrösse berechnen lassen .

    Gibt es dafür schon eine Lösung ? Leider kann ich das Forum nicht durchsuchen , da mir immer ein Fehler im Browser angezeigt wird .

    gruss Ede

  • Ich habe für meinen HTPC vor kurzem sowas ähnliches versucht (die Buttons sind natürlich mit "Leben" gefüllt):

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include<Array.au3>
    #include <WinAPI.au3>
    #include <ButtonConstants.au3>

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

    Opt("GUICoordMode", 1)
    Global $HA = @DesktopHeight -200
    Global $VA = @DesktopWidth -800

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

    Global $Farbe = 0x00BFFF
    Global $Fokusfarbe = 0x4169E1
    Global $binfo = "Aktiviere DVB Viewer|Aktiviere Tastatur|Aktiviere Winamp|Aktiviere PowerDVD|Anwendungs-Stop|Shutdown|Reboot|1080p50|1080p24|720p50|Exit" ;Buttonbeschriftung für jeden Button mit | getrennt eingeben -> Anzahl der Beschriftungen bestimmt gleichzeitig die Anzahl der Buttons
    Global $abfinfo = StringSplit($binfo, '|')
    Global $banzahl = $abfinfo[0]
    Global $babstandleft = 50 ;Abstand links und rechts zur HauptGUI
    Global $babstandtop = 10 ;Abstand zwischen den Buttons
    Global $bwidth = $VA - 2* $babstandleft ;Button Left ausrechnen
    Global $bheight = $HA / $banzahl - $babstandtop* ($banzahl +1) / $banzahl ;Button Höhe in Abhängigkeit zur Auflösung ausrechnen
    Global $HauptGUI = GUICreate("HTPC", $VA, $HA, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))

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

    ;Buttons erstellen und Button TOP ausrechnen
    For $i = 1 to $banzahl
    Global $Button = GUICtrlCreateButton($abfinfo[$i], $babstandleft, $i*$babstandtop+ ($i -1)* $bheight, $bwidth, $bheight,$BS_BITMAP )
    GUICtrlSetFont(-1, 20)
    GUICtrlSetBkColor(-1, $Farbe)

    next

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

    GUISetState(@SW_SHOW, $HauptGUI)

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

    Global $last_focus = GUICtrlGetHandle(-1)
    GUIRegisterMsg($WM_USER, "MY_WM_USER")

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

    While 1

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

    $msg = GUIGetMsg()
    switch $msg
    case $GUI_EVENT_Close
    Exit
    case 3

    case 4

    case 5

    case 6

    case 7

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

    case 8

    case 9

    case 10

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

    case 11

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

    case 12

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

    case 13
    Exit

    EndSwitch
    WEnd

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

    Func MY_WM_USER($hWnd, $msg, $wParam, $lParam)
    Local $Button = WinGetHandle(_WinAPI_GetFocus())
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($last_focus), $Farbe)
    GUICtrlSetBkColor(_WinAPI_GetDlgCtrlID($Button), $Fokusfarbe)
    $last_focus = $Button
    EndFunc ;==>_HauptReset

    [/autoit]

    Funktioniert auch im Prinzip. Einziger Nachteil: man muss mit dem ControlID's weiterarbeiten und ich mir nicht so ganz im Klaren ob nachträgliches Einfügen von weiteren Buttons/Labels usw. darauf eine Auswirkunge hat? Aber vielleicht kann einer von den Profis dazu noch etwas sagen oder eine bessere Lösung vorschlagen.

  • Hallo ,

    bei mir ist es genauso . Soll für mein HTPC sein . Ich habe einige Scripte wie zB das Anzeigen der geplanten Aufnahmen von DVBViewer oder ein Windows Beenden Script , das vor dem runterfahren überprüft wann die nächste Aufnahme beginnt oder ob eine geplante Aufnahme läuft .

    Das ganze sieht am Touchscreen ganz Gut aus , aber am TV ist alles etwas klein geraten . Ich werde mir Deine Lösung mal genauer ansehen .

    Vielen Dank .

    Gruss Ede