我试图弄清楚如何通过Javascript获取设备屏幕的物理尺寸.到目前为止,我的结论是,它目前是不可能的,但我希望有人可以证明我错了:).
到目前为止,我已经尝试通过查找设备的DPI来获取此信息,但似乎没有办法在这里获得正确的值,因为我测试的所有设备(一些HDPI和XHDPI Android设备,iPhone4S,iPad 2和iPad 3)报告96DPI.
获得我尝试过的DPI的第一种方法是你可以在互联网上随处找到的方法:div
用CSS宽度创建一个1in
,得到它clientWidth
或者offsetWidth
你的DPI.不起作用,所有设备报告96.
第二种方法是使用分辨率媒体查询,类似于:
for (var i=90; i < 400; i++) {
if (matchMedia('(resolution: ' + i + 'dpi)').matches) {
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这是一个聪明的解决方案,但不幸的是,它也会返回96.
还有什么可以尝试的吗?
我有以下应用程序绘制规则:
public class Rule extends JComponent
{
public static final long serialVersionUID=26362862L;
// public static final int INCH=Toolkit.getDefaultToolkit().getScreenResolution();
public static final int INCH=(int)(Toolkit.getDefaultToolkit().getScreenResolution()*1.15); // Auto adjust this 1.15 ?
public static final int HORIZONTAL=0;
public static final int VERTICAL=1;
public static final int SIZE=35;
public int orientation;
public boolean isMetric;
private int increment;
private int units;
// private Color rule_color=new Color(0,135,235);
private Color rule_color=new Color(120,170,230);
static JFrame frame=new JFrame("Rule");
static Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); // 1600 x 1200 , 1024 x 768 …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,我需要屏幕DPI ..我检查了几个论坛,并获得了一个代码片段,如下所示:
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("screen width: "+screen.getWidth());
System.out.println("screen height: "+screen.getHeight());
int pixelPerInch=java.awt.Toolkit.getDefaultToolkit().getScreenResolution();
System.out.println("pixelPerInch: "+pixelPerInch);
double height=screen.getHeight()/pixelPerInch;
double width=screen.getWidth()/pixelPerInch;
double x=Math.pow(height,2);
double y=Math.pow(width,2);
Run Code Online (Sandbox Code Playgroud)
但无论屏幕分辨率的pixelPerInch
值是多少,96 的值都保持不变.代码有什么问题?
我得到了另一个swt
相同的代码,如下所示:
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
public void run() {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Display Device");
createContents(shell);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private void createContents(Shell shell) {
Device device = shell.getDisplay(); …
Run Code Online (Sandbox Code Playgroud) 嗨我正在写一个图形程序,我一直在寻找一种方法来获得正在使用的屏幕的物理尺寸.我可以以像素为单位获得屏幕大小以及逻辑分辨率.我似乎无法找到的任何地方都可以获得任何显示器规格中的物理尺寸(例如19" - 376 x 301 mm).问题是,这些信息甚至存储在操作系统的任何位置,当它加载时正在使用的特定屏幕的驱动程序?我正在编写的程序需要在Mac和Windows上运行.
谢谢!
NT