我在多显示器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()
之类的属性吗?
答案 0 :(得分:0)
来自http://www.mathworks.com/help/matlab/creating_plots/positioning-figures.html:
图位置和窗口管理器您的计算机窗口管理器 控制监视器和虚拟桌面上的窗口布局。它 可能不会接受放置可能导致的数字窗口的请求 整个图形或其顶部边框位于屏幕外。一个窗口 经理也可能强制窗口有一定的最小值或最大值 宽度或高度。这样的行为可能导致数字的位置不同 根据您指定的内容,结果可能因平台而异 窗口管理员。
这可能与Metacity窗口管理器有关。