如何控制显示哪些监视器图?

时间:2016-12-07 16:51:12

标签: matlab matlab-figure multiple-monitors

我有一台运行MATLAB的3台显示器Gentoo Linux系统。 MATLAB在中央监视器上运行。我需要MATLAB在左侧监视器上生成绘图,但它总是在右侧监视器上绘制。

我认为这至少部分是由于我的显示器物理安排的非标准方式 - 基本上是2,3,1:

>> get(0,'MonitorPositions')

ans =

           1           1        1920        1080
       -3839           1        1920        1080
       -1919           1        1920        1080

我有没有办法在MATLAB中将其作为默认值进行控制?

1 个答案:

答案 0 :(得分:4)

你可以set the default figure position上的root object如下:

set(0, 'DefaultFigurePosition', [-3839 1 1920 1080]);

默认情况下,这将创建填充左侧监视器的窗口。但是,每次重新启动MATLAB时,此默认值都可能会重置,因此如果您希望它在会话期间保持不变,则必须将其放在startup文件中。

注意:根对象的documentation for the 'MonitorPositions' property说明了这一点:

  

每行中的前两个元素表示相对于原点的显示位置。每行中的最后两个元素表示显示大小。原点是主显示屏的左下角。

如果更改哪个显示器用作主显示器,左侧两列中的相对坐标将会更改,这意味着您必须更改上面一行代码中的位置值。如果您认为显示设置可能经常更改,或者您将在不同的显示器设置上运行代码,那么您可以通过查找左列中具有最低值的显示器位置来确保图表始终显示在最左侧的显示器上。以下是您可以这样做的方法(还包括以前的默认窗口大小和显示器中的位置):

monitorPos = get(0, 'MonitorPositions');
figurePos = get(0, 'DefaultFigurePosition');
[~, leftIndex] = min(monitorPos(:, 1));
set(0, 'DefaultFigurePosition', figurePos + [monitorPos(leftIndex, 1:2)-1 0 0]);