2013-03-11 34 views
5

私は画面の大きさと解像度を取得するためにjavaを使用しています。次のコードを実行すると、以下の出力が得られます。Java Toolkit画面解像度descrepensies

Toolkit toolkit = Toolkit.getDefaultToolkit(); 
Dimension dim = toolkit.getScreenSize(); 
System.out.println("Width of Screen Size is "+dim.width+" pixels"); 
System.out.println("Height of Screen Size is "+dim.height+" pixels");  
int resolution =Toolkit.getDefaultToolkit().getScreenResolution(); 
System.out.println(resolution); 

出力:

Width of Screen Size is 1920 pixels 
Height of Screen Size is 1080 pixels 
120 

今のJavadocはgetScreenResolutionは、DPI(インチあたりのドット数)の解像度を返すと言っています。私はそれが私の画面上に5インチになる600pxs幅の画像を持っている場合、それを意味します。私が測定すると、実際には4インチ幅です。それが150 dpiであるべきことを私に示します。

私のモニターは15.6インチのモニターで、幅は13.6インチ、長さは7.6インチです。私の画面の幅は明らかに1920ピクセルで、1インチあたり約141ピクセルになります。 1080/7.6は1インチあたり約141ピクセルと計算されます

This web pageは600x600pxの画像を表示します。私は画面上でそれを141ピクセルに計算する4.25 "と測定します。

なぜgetScreenResolutionは120を返すのですか?

私はこれについて間違っている場合はお知らせください。

+3

getScreenResolutionは、OS、ドライバ、およびユーザー較正の間にあるものであるため、信頼できません。あなたが何をしても、それは信頼できるものではありません。次のリンクを確認してください: http://stackoverflow.com/questions/6544510/how-to-get-the-screen-dpi-in-java http://stackoverflow.com/questions/4707756/how-to-正しく検出されたdpiのディスプレイ付きJava –

答えて

0

は、ドライバがどれほど正確であるかに依存します(ビデオカードとモニタの間のすべての接続でサイズに関するフィードバックができないなど)、返されるサイズは完全にはスローされません。