我在多显示器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 = true
或false
这个数字的属性,我可以使用set()
调用设置?
嗯,你的第一块代码适合我。我仍然在使用R2012a。你正在使用哪个版本? – gnovice 2013-05-03 16:52:53
我在Red Hat Enterprise Linux 6.4和GNOME 2.28.2上使用R2011a。你呢?也许这是在R2012a中解决的问题,或者(更可能)在不同操作系统上的行为不同? – 2013-05-03 16:58:51
我正在运行Windows 7。 – gnovice 2013-05-03 17:02:35