当多台显示器连接到我的计算机时,我可以检测到它们,并根据从
获得的值设置位置来绘制图形。get(0, 'MonitorPositions')
但是,当我在运行MATLAB时断开监视器的连接时,此属性不会更新。我使用distFig处理图形的位置,但是由于此属性未更新,因此有时图形会绘制在屏幕外部的像素位置(即在断开连接的显示器上绘制)。
重新启动MATLAB可以解决此问题,但是有没有办法重新检测已连接的监视器的数量?
答案 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(这不是一个完美的解决方案)。