2017-12-02 8 views
0

Verfügt SWT (oder JFace) über eine öffentliche Convenience-Methode für die Konvertierung konventioneller Einheiten in ihre skalierten Gegenstücke? Ich habe erwähnt, eine DPIUtil Klasse, aber das ist Teil eines internen NamespaceWie nutzen Sie die Hi-DPI-Unterstützung von SWT für die Widget-Dimensionierung?

Wenn es keine Komfort-Methode zur Verfügung steht, gibt es eine zuverlässige Möglichkeit, auf die Zoomstufe zugreifen? Ich sehe, es gibt Device#getDeviceZoom(), aber das ist geschützt. Es gibt Device#getDPI(), die öffentlich ist, also könnte es nützlich sein. Berücksichtigt das Skalierung oder ist es naiv und erklärt einfach, dass DPI für alles ist?

Ich verwende Standardgrößen Hinweise auf einige Panels und ich möchte, dass sie die Monitorskalierung Einstellung berücksichtigen. Z. B. Sprich auf einer normalen Anzeige Ich möchte, dass die Vorgabe 300px beträgt, aber bei 150% Skalierung möchte ich sie auf 450px berechnen. Die Berechnung ist offensichtlich einfach, aber ich brauche den Multiplikator.

HINWEIS: Dies ist verwandt aber anders als meine vorherige Frage How do you utilize SWT's Hi-DPI support for icons?, weil SWT Klassen zur Verfügung stellt, um dies speziell mit Bildern zu behandeln.

+0

Normalerweise brauchen Sie das nicht. Die Angabe einer Größe von 300px wird automatisch von SWT auf einem 150 skalierten Gerät auf 450px skaliert (und jedes von Ihnen bereitgestellte 150 skalierte Bild wird verwendet). Ich habe einen iMac zwei Bildschirme - ein 5k-Bildschirm skaliert bei 200 und ein 2,5k Bildschirm nicht skaliert - SWT-Anwendungen erscheinen auf beiden die gleiche Größe. –

+0

@ greg-449 Ich habe nicht bemerkt, dass es automatisch konvertiert wird. Vermerkt SWT das irgendwo oder eines dieser undokumentierten Features, an die sich die meisten Implementierungen halten? Ich konnte keine umfassenden Informationen zur DPI-Skalierung mit SWT finden. – cpburnz

+0

Es ist nicht wirklich SWT, es ist das Betriebssystem (zumindest so funktioniert es auf macOS). Das Betriebssystem skaliert die Größen, gibt Schriften in der höheren Auflösung wieder und verwendet die hochauflösenden Bilder, falls verfügbar. Programme müssen also nichts anderes tun, als hochauflösende Bilder zur Verfügung zu stellen. –

Antwort

1

Ich habe nichts anderes als DPIUtil zur Bestimmung des Maßstabs (Zoom) -Faktor gefunden.

Sie benötigen diese Information normalerweise nicht. Die Angabe einer Größe von 300px wird automatisch von SWT auf einem 150 skalierten Gerät auf 450px skaliert (und jedes von Ihnen bereitgestellte 150 skalierte Bild wird verwendet). Ich habe einen iMac mit zwei Bildschirmen - ein 5k Bildschirm bei 200 skaliert und ein 2,5k Bildschirm nicht skaliert - SWT-Anwendungen erscheinen auf beiden die gleiche Größe.

Die Skalierung wird tatsächlich im Betriebssystem statt SWT durchgeführt (zumindest so funktioniert es auf macOS). Das Betriebssystem skaliert die Größen, gibt Schriften in der höheren Auflösung wieder und verwendet die hochauflösenden Bilder, falls verfügbar. Programme müssen also nichts anderes tun, als hochauflösende Bilder zur Verfügung zu stellen.

Auf diese Weise erscheinen auch alte Programme, die nichts über gezoomte Anzeigen wissen, in einer vernünftigen Größe.

Verwandte Themen