import java.awt.*;
...
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
// find the screen on which we draw
for (GraphicsDevice gd : gds){
DisplayMode dm = gd.getDisplayMode();
for (GraphicsConfiguration gc : gcs) {
Rectangle bnds = gc.getBounds();
if (bnds.contains(pt)){
// pt is a java.awt.Point in the working area in virtual coordinates
// and here is the expected windows ratio
int ratio = 100 * dm.getWidth() / bnds.width;
...
}
}
}
3条答案
按热度按时间flvlnr441#
我是这样做的:
这里,基于返回值(96、120或144),可以分别确定大小是100%、125%还是150
yhxst69z2#
我知道这是一个老问题,但它仍然是一个实际的问题,答案是不工作与windows 10,其中的比例可以在每个屏幕上不同时,使用几个显示器。SWT仅考虑一个具有全分辨率的显示器,并且返回的DPI将是默认屏幕的DPI。
我分享我使用AWT API找到的解决方案,因为SWT不会有帮助:
t3psigkw3#
您可以为每个监视器使用widget.getMonitor().getZoom()。