2013-05-03 64 views
1

我在多显示器Linux系统(红帽企业Linux 6.4)上使用MATLAB R2011a。答案可能取决于您使用的操作系统或图形子系统。你如何强制图形跨越MATLAB中的多个显示器?

运行的多显示器系统上下面的代码:

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 = truefalse这个数字的属性,我可以使用set()调用设置?

+0

嗯,你的第一块代码适合我。我仍然在使用R2012a。你正在使用哪个版本? – gnovice 2013-05-03 16:52:53

+0

我在Red Hat Enterprise Linux 6.4和GNOME 2.28.2上使用R2011a。你呢?也许这是在R2012a中解决的问题,或者(更可能)在不同操作系统上的行为不同? – 2013-05-03 16:58:51

+0

我正在运行Windows 7。 – gnovice 2013-05-03 17:02:35

回答

0

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

图的位置和窗口管理器,您的计算机的窗口管理器 控制窗口在监视器上,并在虚拟桌面上的布局。它 可能不会承诺放置数字窗口的请求,该数字窗口会导致整个图形或其顶部边框被定位在屏幕外。窗口 管理器也可能强制窗口具有某个最小或最大宽度或高度。这些操作可能会导致图形的位置与您指定的位置不同 ,并且结果可能因平台和窗口管理器而异。

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

相关问题