Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows 10 und DPI (https://www.delphipraxis.net/186054-windows-10-und-dpi.html)

Roadmap 30. Jul 2015 10:33

Windows 10 und DPI
 
Habe heute bei einem Test meiner Programme auf einem Windows 10 Tablet eine interessante Entdeckung gemacht. Ich habe bisher die Problematik von verschiedenen DPI-Zahlen bzw. Large Fonts mit folgendem Code im FormCreate gelöst:

Delphi-Quellcode:
  Scaled := False;
  if Screen.PixelsPerInch <> 96 then ScaleBy(Screen.PixelsPerInch, 96);
Der Effekt war klar, Scaling aus und wenn PixelsPerInc ungleich 96 DPI (100%) sind wird danach gescaled. Somit sah die App immer gleich aus egal was eingestellt war.

Das bis inkl. Win8.1 gut funktioniert, jetzt auf Windows 10 allerdings nicht mehr?! Auch bei den Einstellungen 125% oder 150% bringt die PixelsPerInch immer 96 als Ergebnis!

Kennt jemand den Grund bzw. eine Abhilfe?

mkinzler 30. Jul 2015 10:37

AW: Windows 10 und DPI
 
http://www.delphipraxis.net/186046-w...-new-post.html

Roadmap 30. Jul 2015 10:47

AW: Windows 10 und DPI
 
Danke Markus für die schnelle Antwort, bin nicht auf die Idee gekommen im "Betriebssystem"-Bereich nach einer Lösung zu suchen :?

OK dann versuche ich mal zusammenzufassen, denn das dürfte ja dann einige Leute mit älteren Delphi-Applikationen betreffen.

Das Scaling in einer Delphi-Applikation bringt wohl erst mal nix mehr, da Windows hier einfach einen Override macht. Lösbar wäre das Ganze wohl nur mit einer Manifestdatei die den High DPI Awareness Level so setzt das es wieder passt. Nur hat jemand dazu ein Beispiel?

Roadmap 30. Jul 2015 11:19

AW: Windows 10 und DPI
 
Liste der Anhänge anzeigen (Anzahl: 3)
Also ich habe mir das nochmal angeschaut, das Ganze stellt sich so dar:

1. Bild: Das Fenster unter Win7 96DPI, so sollte es überall aussehen
2. Bild: Das Fenster unter Win10 mit 150% Scaling und Scaling:=True
3. Bild: Das Fenster unter Win10 mit 150% Scaling und Scaling:=False;

Angestrebt ist das es einfach überall gleich aussieht, nur Win10 scheint das Fenster jetzt immer zu scalen und die Inhalte dazu zu skalieren?!?

Weiss jemand Rat?

Roadmap 30. Jul 2015 11:49

AW: Windows 10 und DPI
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt nochmal die Ansicht unter Windows 7 mit 125% Scaling und dem gleichen Code. Der Fensterrahmen ist zwar vergrössert aber der Inhalt bleibt gleich. DAs möchte ich auch unter Windows 10 wieder erreichen!

So wie ich das sehe ist das Problem das WIndows 10 schon das Fenster an sich vergrössert (125%) des Originals inkl. der Controls und daraus dann die Interpolation entsteht, nur wie verhindere ich genau dieses Verhalten??

jaenicke 30. Jul 2015 12:51

AW: Windows 10 und DPI
 
Du hast gar kein Manifest eingebunden (bei Delphi 7 die Unit XPMan einbinden oder das Manifest auf das Formular legen). Wie sieht es denn dann aus?

Roadmap 30. Jul 2015 13:56

AW: Windows 10 und DPI
 
Hallo Sebastian,

nein das XPMan(ifest) ändert an dem Verhalten gar nichts. Alleine das Fenster wird schon um 25% vergrössert dargestellt und alle Inhalte darin gescaled?!?!

Luckie 30. Jul 2015 14:07

AW: Windows 10 und DPI
 
Und was ist, wenn es der Benutzer so haben will, weil er zum Beispiel sehbehindert ist?

Roadmap 30. Jul 2015 14:12

AW: Windows 10 und DPI
 
Luckie, ich verstehe Deinen Einwand! Allerdings ist es so das jedes meiner D7-Programme ohne das ich es will so ausgeführt wird. Unter Windows 7 war eben dies nicht der Fall, da es mit Scaled:=False komplett abgefangen werden konnte. Es mag sein, dass es auch Anwendnungszwecke dafür gibt, für den beschränkten Userkreis meiner Programm allerdings nicht. Zudem wäre es schön wenn ich da auch Einfluss darauf nehmen könnte wie mein Programm angezeigt werden könnte!

Doch nochmal zurück zum Thema: Es muss doch möglich sein, dieses Verhalten grundsätzlich abzustellen, jemand eine Idee?

Weiterhin ist es zumindest bei Windows 10 jetzt so, dass die Einstellung mit mehr als 96DPI (also 125% oder 150%) selbstständig von Windows bei der Installation gewählt wird, wenn dies als sinnvoll erachtet wird. Scheint eine Kombi aus Auflösung und Bildschirmgrösse zu sein, die das veranlasst.

Bernhard Geyer 30. Jul 2015 15:57

AW: Windows 10 und DPI
 
Du musst im manifest einen neuen Eintrag ('ne GUID) für Win10 ergänzen (so wie auch ein Eintrag für W7, W8 nötig wäre).

Hier der Entsprechende Artikel: http://blogs.msdn.com/b/chuckw/archi...t-madness.aspx


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz