AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirm Auflösung

Ein Thema von Zodi · begonnen am 30. Okt 2019 · letzter Beitrag vom 31. Okt 2019
Antwort Antwort
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#1

Bildschirm Auflösung

  Alt 30. Okt 2019, 20:56
Hi Delphianer

Ich versuche gerade die aktuelle Auflösung an meinem Monitor anzuzeigen.
Momentan ist die auf 3840x2160 ist ein 4K Monitor.

Wenn ich mit meiner Funktion diese versuche anzuzeigen bekomme ich 3072x1728

Delphi-Quellcode:
function ScreenRes: string;
begin
  Result := String(inttostr(GetSystemMetrics(SM_CXSCREEN))) + 'x' + String(inttostr(GetSystemMetrics(SM_CYSCREEN)));
end;
hat wer ne Ahnung worann das liegen kann.

Grüsse Zodi
Pascal
  Mit Zitat antworten Zitat
Alt 30. Okt 2019, 21:09     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#2

AW: Bildschirm Auflösung

  Alt 30. Okt 2019, 21:33
Also mit screen.widht und screen.height bekomme ich die gleichen Werte.

ich habe nur einen Monitor angeschlossen
Pascal
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#3

AW: Bildschirm Auflösung

  Alt 30. Okt 2019, 21:34
Schaut euch mal TScreen genauer an. Soweit ich im Kopf habe, kann man darüber
die Auflösung aller Bildschirme abfragen.

Stichwort: Array!
Screen[0].Width, Screen[1].Width und vermutlich Screen.Count oder .MonitorCount...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Zodi
Zodi

Registriert seit: 19. Jul 2017
Ort: Berlin
47 Beiträge
 
Delphi XE7 Ultimate
 
#4

AW: Bildschirm Auflösung

  Alt 30. Okt 2019, 21:50
scheint auch mit Tscreen nicht zu funktionieren.
Pascal
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#5

AW: Bildschirm Auflösung

  Alt 30. Okt 2019, 22:03
Ist vielleicht eine Bildschirmskalierung eingestellt und die wird da evtl. berücksichtigt?
Mal in den Bildschirmeinstellungen von Windows nachschauen und umrechnen, ob ein dort
eingestellter Skalierungsfaktor rechnerisch diese Differenz erklärt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Bildschirm Auflösung

  Alt 31. Okt 2019, 06:08
3072 * 1,25 = 3840.
1728 * 1,25 = 2160.

-> Skalierung von 125% ist eingestellt.
Markus Kinzler
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Bildschirm Auflösung

  Alt 31. Okt 2019, 07:36
Hallo Zodi

ich weiss nicht, mit welcher Delphi Version du arbeitest.

In den neueren kannst du unter Projekt > Optionen > Manifest > DPI Unterstützung einstellen, wie sich dein Programm und Windows punkto der unter Windows eingestellten Skalierung verhalten sollen.

(In älteren Delphi Versionen musst du die Manifest Datei anpassen.)

Ein Beispiel. Dein Programmfenster habe eine Grösse von 600x400.
Wenn du "Keine" DPI Unterstützung auswählst und du unter Windows eine Skalierung von 125% eingestellt hast, dann wird Windows dein Fenster um diesen Faktor vergrössert (und dadurch etwas unscharf) darstellen. Auf dem Bildschirm wird dein Fenster also 600x1.25=750 breit und 400x1.25=500 Monitorpixel hoch angezeigt. Wenn du aber in deinem Programm Breite und Höhe abfragst, werden immer noch 600 bzw. 400 zurückgegeben. Hätte eines deiner Fenster eine Grösse von 3072x1728, dann würde es auf dem Monitor 3072x1.25 breit und 1728x1.25 hoch dargestellt (3840x2160); wenn du Breite und Höhe in deinem Programm abfragst, dann werden 3072 bzw. 1728 zurück gegeben. Genau gleich verhält es sich mit den Screen Werten.

Wenn du unter DPI Unterstützung hingegen zum Beispiel "über Monitor v2" wählst, dann bist du verantwortlich fürs Skalieren des Fensters. Windows wird dein Fenster nicht skalieren. Dein 600x400 Fenster wird 600x400 Monitorpixel gross dargestellt, wenn du keine Korrektur vornimmst. Wenn du jetzt die Screen Werte abfragst, wirst du 3840x2160 zurück erhalten.
Michael Gasser

Geändert von Michael II (31. Okt 2019 um 10:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bildschirm Auflösung

  Alt 31. Okt 2019, 08:31
Guten Tag, auf stackoverflow.com habe ich diese Methodik dafür entdeckt:
Delphi-Quellcode:
var
  MonInfo: TMonitorInfo;
begin
  MonInfo.cbSize := SizeOf(MonInfo);
  GetMonitorInfo(MonitorFromWindow(Handle, MONITOR_DEFAULTTONEAREST), @MonInfo);
  ShowMessage(Format('Current resolution: %dx%d',
              [MonInfo.rcMonitor.Right - MonInfo.rcMonitor.Left,
               MonInfo.rcMonitor.Bottom - MonInfo.rcMonitor.Top]));
Damit noch eine möglich aufgezeigt wird

Ps: Dies sollte nur den Hauptmonitor betreffen, ist aber anpassbar.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
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