2017-12-02 7 views
0

SWT(またはJFace)には、従来のユニットをスケールされた対応ユニットに変換するための公平な方法がありますか? DPIUtilクラスについての説明がありますが、これは内部ネームスペースの一部ですSWTのHi-DPIサポートはどのようにウィジェットサイズ設定に使用されていますか?

便利な方法がない場合は、確実にズームレベルにアクセスできますか?私はDevice#getDeviceZoom()があることがわかりますが、それは保護されています。 Device#getDPI()が公開されているので便利です。これはスケーリングを考慮に入れているのですか、それともナイーブで、DPIはすべての点で96であると宣言していますか?

私はいくつかのパネルにデフォルトのサイジングヒントを適用しています。私は、モニターのスケーリング設定を考慮に入れたいと思います。たとえば、通常のディスプレイではデフォルトを300pxにしたいが、150%のスケーリングでは450pxと計算したい。計算は明らかに単純ですが、私は乗数が必要です。

注:これは私の前の質問How do you utilize SWT's Hi-DPI support for icons?とは関係ありますが、これはSWTがこれをイメージで特別に扱うクラスを提供するためです。

+0

通常は必要ありません。 300pxのサイズを指定すると、150個のスケーリングされたデバイスでSWTによって自動的に450pxにスケールされます(150個のスケーリングされたイメージが使用されます)。 iMacには2つの画面があります.5k画面は200で、2.5k画面は拡大縮小されません - SWTアプリケーションは両方とも同じサイズで表示されます。 –

+0

@ greg-449私はそれが自動的に変換されたことを認識していませんでした。 SWTはどこかに書かれているのですか、それとも大部分の実装が遵守しているそれらの文書化されていない機能の1つですか? SWTでのDPIスケーリングに関する包括的な情報を見つけることができませんでした。 – cpburnz

+0

これは本当にSWTではなく、OSです(少なくともMacOS上で動作する方法です)。 OSはサイズを拡大し、高解像度でフォントをレンダリングし、利用可能であれば高解像度画像を使用します。したがって、プログラムは高解像度画像を提供する以外に何もする必要はありません。 –

答えて

1

スケール(倍率)を決定するためにDPIUtil以外のものは見つかりませんでした。

通常、この情報は必要ありません。 300pxのサイズを指定すると、150個のスケーリングされたデバイスでSWTによって自動的に450pxにスケールされます(150個のスケーリングされたイメージが使用されます)。私は2つの画面を持つiMacを持っています.5k画面は200で、2.5k画面は拡大縮小されません - SWTアプリケーションは両方とも同じサイズで表示されます。

スケーリングは実際にはSWTではなくOSで実行されます(少なくともそれはmacOSでどのように動作するかです)。 OSはサイズを拡大し、高解像度でフォントをレンダリングし、利用可能であれば高解像度画像を使用します。したがって、プログラムは高解像度画像を提供する以外に何もする必要はありません。

ズームされたディスプレイについて知らない古いプログラムであっても、このようにしても合理的なサイズで表示されます。

関連する問題