GUIs nahezu perfekt DPI-skalierbar machen - sogar mit Per-Monitor-DPI Scaling für Windows 10

  • Ich bin grad am generalisieren bzw. "UDF" machen der Funktion und leider klappt das ganze nicht so wie ich es vorhatte.

    Ursprünglich wollte ich einfach die Schriftarten auslesen und die Werte anpassen, aber der bereits angesprochene Rundungsfehler macht alles kaputt.

    Wenn die GUI-Größe nun so gewählt ist, dass sie sich nicht durch 1.5 teilen lässt, verschwinden Buttons einfach wenn man die GUI oft genug über den Rand hinaus zieht.

    Ich werde also die Controlgrößen auch einspeichern müssen und diese dann manuell setzen. Es wird dann immer von der 100% Variante resized.

    Vorgehen: Fenster spawnt auf 100%. Ziehe auf 150. Skaliere GUI auf 100%, setze alle Controlgrößen wie bei 100%. Skaliere GUI auf 150% mit $GUI_DOCKAUTO.

    Zieht man das Fenster nun von 150% auf 200%. Skaliere GUI auf 100%, setze Controlgrößen wie bei 100%. Skaliere GUI auf 200% mit $GUI_DOCKAUTO.

    Ich hoffe ich krieg das heute noch hin, hab mich gestern abend ne gute Stunde damit aufgehalten herauszufinden warum eine ListViewSpalte sich unbedingt resizen muss wenn ein neues Element hinzugefügt wird.

  • So, bin allmählich am Ende angelangt, sowohl was das Programmieren angeht als auch meine Geduld für dieses be********** Thema, kein Wunder, dass niemand korrekte DPI-Skalierung implementieren möchte.

    Aber hey, Per-Monitor-DPI-Scaling für Windows 10 ist geschafft und Windows 7 Kompatibilität immer noch gewahrt.

    Viel gibts eigentlich dazu nicht mehr zu sagen, die ursprüngliche Idee wurde über den Haufen geworfen wegen Windows 10 und Per-Monitor-DPI-Scaling.

    In den Skripten findet ihr Beschreibung genug, besonders in der GUIFunctions.au3 welche ich hier noch im Skripteforum hochladen werde.

    Einige Controls sträuben sich hardcore, einige zicken anderweitig rum, aber... naja schaut selbst mal rein. https://autoit.de/index.php?thread/86505

    Es gibt sicherlich Stellen im Code die man optimieren kann, aber ich hoffe ihr sehts mir nach, dass ich es langsam leid bin. Arbeite seit über einer Woche etwa 8-9 Stunden pro Tag dran.

  • alpines 25. Juni 2019 um 00:28

    Hat den Titel des Themas von „[Tutorial] GUIs nahezu perfekt DPI-skalierbar machen mit autoitinternem Resizing“ zu „GUIs nahezu perfekt DPI-skalierbar machen - sogar mit Per-Monitor-DPI Scaling für Windows 10“ geändert.
  • Sodele, ich habe auch noch ein bissl recherchiert und diese sollte die Lösung sein:

    Ich benutze dieses Manifest, welches von AutoIt3Wrapper.exe generiert und in die Exe hinzugefügt wird.

    Hier die relevanten Zeilen, so ab 2530:

    Kann jemand bitte testen, ob jetzt die Test GUI DPI kompatible ist? Die Child GUI ist definitiv nicht DPI "aware", aber die Haupt GUI sollte es sein.

    Danke.