2013-05-03 62 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窗口管理器有關。

相關問題