![]() |
Mit Delphi den Skalierungsfaktor herausfinden
Hallo,
ich habe mal wieder ein kleines Problem. Ich möchte mit Delphi herausfinden welche Skalierung in Windows (100%, 125%, 150%) eingestellt ist. Zumindest für den primären Monitor. Hat jemand eine Idee wie man das macht. LG Anni |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Ich hatte da mal das
![]()
Delphi-Quellcode:
Sherlock
function TPaintingGrid.SetScreenDPIandScale(const Context: TFmxObject = nil):
Boolean; var DeviceBehavior: IDeviceBehavior; DisplayMetrics: TDeviceDisplayMetrics; {$IFDEF ANDROID} dm: JDisplayMetrics; {$ENDIF} begin Result := False; {$IFDEF ANDROID} dm := GetJDisplayMetrics; if dm <> nil then begin fppi := dm.densityDpi; fScale := dm.scaledDensity; Result := True; exit; end; {$ENDIF} if TBehaviorServices.Current.SupportsBehaviorService(IDeviceBehavior, DeviceBehavior, Context) then begin DisplayMetrics := DeviceBehavior.GetDisplayMetrics(Context); fScale := DisplayMetrics.ScreenScale; fppi := DisplayMetrics.PixelsPerInch; // / (fScale * fScale); fScreenWidth := DisplayMetrics.LogicalScreenSize.Width; Result := True; end; end; |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Ab WIN8.1:
![]() GetScaleFactorForMonitor |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Super, ich danke euch. Ich werde das gleich mal probieren.
LG Anni |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Dies sollte auch gehen:
Delphi-Quellcode:
result := Round(Screen.PrimaryMonitor.PixelsPerInch*100/96); // ganze Prozent
Ist auch leicht auf alle Monitore zu erweitern. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
Ersatz:
Delphi-Quellcode:
Zeigt bei WIN8.1 richtig an: 100% bzw. 125%
caption:= INTTOSTR(ROUND(Screen.PixelsPerInch*100/96))+' %';
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Aber Vorsicht, die von t.roller genannte Funktion gibt es nicht ohne Grund. Ab Windows 8 kann jeder Monitor auch eine eigene Skalierung haben.
Die beiden Full HD 24" Monitore links und rechts haben bei mir z.B. 100%, der 27" QHD Monitor in der Mitte aber 125%. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
Delphi-Quellcode:
für jeden einzelnen Monitor abfragen.
Screen.Monitor[I]
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Hallo!
Ich kämpfe auch gerade mit dem Thema. Da ich auf D2007 festgenagelt bin, kann ich die neuen, monitorspezifischen APIs nicht (ohne Weiteres) nehmen. Aber wenn ich meine beiden Monitore (Laptop und extern) auf 125% gestellt habe, sollten Screen.PixelsPerInch und GetDeviceCaps(DC, LOGPIXELSX) doch 120 ergeben? Ich kriege aber bei beiden 96. Ich habe in Windows 10 die Einstellung "Größe von Text, Apps und anderen Elementen ändern" genommen - das ist die Variante, die sofort, ohne Neuanmeldung, wirkt. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Hast du den Manifest erweitert das auch für Windows 10 dein Anwendung nicht "als zu dumm zum eigenen Scallieren" betrachtet wird?
|
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
Update: Ich hab mal testhalber schnell SetProcessDPIAware aufgerufen und schon klappt's. Update 2: ...aber nur nach einem Neustart. |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Hallo zusammen!
Ich krieg langsam die Krise! Jetzt klappt's (anscheinend :mrgreen:) unter W10. Dafür hab ich (seit kurzem?) unter W7 ein neues Problem. Dort kriege ich scheinbar nur bis 125% korrekte Werte für LOGPIXELSX/Y geliefert. Mal als Tabelle:
Code:
Der Wert für 150% unter W7 sollte mMn auch 144x144 sein, ist er aber nicht. Laut unserer Tester ist es auch mit 133% falsch. :wall:
| 100% 125% 150%
----+------------------------------------------------------------------------- W7 | 96x96 120x120 96x96 W10 | 96x96 120x120 144x144 Hat jemand ne Idee, was ich jetzt wieder falsch gemacht habe? Edit: Scheint das zu sein: ![]() |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Mir gehts genauso...nur mit Windows-macOS-iOS. Ich überlege langsam fixe Werte anzunehmen...
Sherlock |
AW: Mit Delphi den Skalierungsfaktor herausfinden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz