我在多监视器 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
或false
我可以使用set()
调用设置?