Windows 10, wie beeinflussen Auflösung und Skalierungsfaktor die Breite und Höhe in Pixel?

bernd91364

Cadet 4th Year
Registriert
Nov. 2020
Beiträge
86
Hallo,
die Frage bezieht sich nicht (nur) auf Windows 10 da eher grundlegender Natur, aber ich hoffe sie passt trotzdem hierher:
Weiß Jemand (oder weiß wo man das nachlesen kann) wie bei Windows das genau mit Bildschirmgröße und Skalierung funktioniert, wenn man die ändert?

Konkret was mein Problem ist:
Ich habe Windows 10, habe am Notebook die Auflösung 1920 x 1080.
Ausserdem ist "Größe von Text, Apps und anderen Elementen ändern" aktuell auf 125% eingestellt.

Ich habe ein Java Programm, das mit Koordinaten arbeitet (mittels "Robot" Klasse), die in diesem "Setup" abgelesen wurden.
Funktioniert auch wunderbar.

Nun will ich dasselbe Programm in einer virtuellen Maschine, namentlich in virtualbox mit Windows 10, laufen lassen.
Das kann aber maximal als Auflösung 1680 x 1050.

Jetzt müsste ich die Punktkoordinaten, die im alten Setting abgelesen wurden, entsprechend umrechnen ins neue Setting (bzw. mein Programm abändern damit es das automatisch macht)
Ich würde, um möglichst wenig Fehlerquellen zu haben, in der VM auch auf 125% Skalierung stellen, sodass sich nur die Auflösung unterscheidet.

jetzt stellt sich mir halt die Frage:
Wie rechne ich auf gut Deutsch gesagt einen alten Punkt in Koordinaten des neuen Systems um?
Ich würde vermuten dass ich einfach die alten (x1,y1) nehmen kann und mit passendem Faktor umrechnen kann ins neue System.

Namentlich also sowas wie
xneu=xalt*neueBildschirmbreite/alteBildschirmbreite
im beispiel also
xneu=xalt*1680/1920

gleiches für die y koordinate.

halt etwas runden dabei, aber mir kommt es auf 1-2 Pixel abweichung meist nicht drauf an.

Ich jedenfalls vermute mal dass es so linear skaliert. Könnte ja aber auch grundverschieden gehandhabt werden von Windows.

Aber hat hier Jemand wirklich Ahnung von Bildschirmgröße, Skalierung und Co. und kann meine Vermutung totsicher bestätigen?
Oder weiß vielleicht sogar eine microsoft seite oder quelle wo es konkret steht?

Aus Experimenten weiß ich, dass bei gleicher auflösung und skalierungswechsel von 100 auf 125% sich die Pixellänge/breite verändert um 1/1.25
Also länge/breite vorher durch 1.25 geteilt gibt die neue Pixellänge/breite.
 
Bei Microsoft heißt es "DPI Awareness", z.B. hier beschrieben:
https://docs.microsoft.com/en-us/wi...pi-desktop-application-development-on-windows

Die Auflösung an sich ändert sich ja nicht, sondern die Punktdichte. Aber wenn du die Skalierung in der VM ebenfalls auf den gleichen Faktor stellst, ist ja sogar das egal. Dein eigentliches Problem sollte die Skalierung ohnehin nicht sein. Die Auflösung ist in Höhe und Breite natürlich linear, alle Pixel sind gleich groß.
 
Amaoto schrieb:
Bei Microsoft heißt es "DPI Awareness", z.B. hier beschrieben:
https://docs.microsoft.com/en-us/wi...pi-desktop-application-development-on-windows

Die Auflösung an sich ändert sich ja nicht, sondern die Punktdichte. Aber wenn du die Skalierung in der VM ebenfalls auf den gleichen Faktor stellst, ist ja sogar das egal. Dein eigentliches Problem sollte die Skalierung ohnehin nicht sein. Die Auflösung ist in Höhe und Breite natürlich linear, alle Pixel sind gleich groß.
Was sich nun genau ändert, weiß ich nicht.
ich weiß nur dass sich die Breite und Höhe, so wie sie java jedenfalls erkennt und benutzt, ändert.
Daher hats micht halt interessiert, wenn Alles andere gleich ist und sich nur die Auflösung ändert, ob sich alle Koordinaten nur entsprechend simpel skalieren um den selben Faktor.
 
Zurück
Oben