你如何在MATLAB中强制数字跨越多个监视器?

时间:2013-05-03 16:46:48

标签: matlab matlab-figure matlab-guide

我在多显示器Linux系统(Red Hat Enterprise Linux 6.4)上使用MATLAB R2011a。答案可能取决于您使用的操作系统或图形子系统。

在多监视器系统上运行以下代码:

mons = get(0,'MonitorPositions') ;
first_monitor_width = mons(1,3) ; % width of first monitor in pixels
fig = figure ; % create a new figure window
x_pos = 0 ;
y_pos = 100 ;
x_dim = first_monitor_width + 300 ; % Set fig to be 300 pxwider than left monitor
y_dim = 500 ;
set(fig,'OuterPosition',[x_pos y_pos x_dim y_dim]) ; % Or use 'Position'; same.

我们要求图形的左边缘位于左侧显示器的左侧,宽度等于左侧显示器的宽度,加上300像素。因此,这个数字应该跨越两个监视器。

但是,MATLAB创建的图形宽度等于左侧监视器的宽度(在我的计算机上,为1920像素)。

现在,扭曲:

手动(使用鼠标),拖动图形的右下角,使其跨越两个监视器(即,使图形的宽度大于一个监视器的宽度)。现在再次运行以下代码行:

set(fig,'OuterPosition',[x_pos y_pos x_dim y_dim]) ;

现在它有效!换句话说,一旦你强迫图形“打破监视器之间的障碍”,MATLAB将整个连续的显示空间视为一个画布。

请注意,如果您使用鼠标调整窗口大小以使其再次完全在一个监视器中,然后再次运行set(fig,'OuterPosition', ...)调用,它将返回到原始行为,其中仅允许该数字在单个窗口中调整大小。

我的问题是,如何强制数字跨越多个显示器,完全用脚本编写?比如,我可以使用SpansMonitors = true调用设置falseset()之类的属性吗?

1 个答案:

答案 0 :(得分:0)

来自http://www.mathworks.com/help/matlab/creating_plots/positioning-figures.html

  

图位置和窗口管理器您的计算机窗口管理器   控制监视器和虚拟桌面上的窗口布局。它   可能不会接受放置可能导致的数字窗口的请求   整个图形或其顶部边框位于屏幕外。一个窗口   经理也可能强制窗口有一定的最小值或最大值   宽度或高度。这样的行为可能导致数字的位置不同   根据您指定的内容,结果可能因平台而异   窗口管理员。

这可能与Metacity窗口管理器有关。