(重新)检测断开显示器时连接的显示器数量

时间:2019-06-18 20:40:19

标签: matlab

当多台显示器连接到我的计算机时,我可以检测到它们,并根据从

获得的值设置位置来绘制图形。
get(0, 'MonitorPositions')

但是,当我在运行MATLAB时断开监视器的连接时,此属性不会更新。我使用distFig处理图形的位置,但是由于此属性未更新,因此有时图形会绘制在屏幕外部的像素位置(即在断开连接的显示器上绘制)。

重新启动MATLAB可以解决此问题,但是有没有办法重新检测已连接的监视器的数量?

1 个答案:

答案 0 :(得分:1)

我想我找到了使用JAVA的解决方案:

我从这里获得了JAVA代码:How do I get number of available screens?

获取数量

get(0, 'MonitorPositions')继续显示相同的值,并且JAVA结果更改:

%// Get local graphics environment
%GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
env = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();

%// Returns an array of all of the screen GraphicsDevice objects.
%GraphicsDevice[] devices = env.getScreenDevices();
devices = env.getScreenDevices();

%numberOfScreens = devices.length;
numberOfScreens = length(devices)

我在Windows 10操作系统中测试了代码。
在监视器重复模式下,结果是一台监视器,在扩展模式2下。
当我拔下显示器的电源时,结果是1.
拔下所有显示器的电源,结果也为1(这不是一个完美的解决方案)。