1

マルチモニター 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 ピクセル) と同じ幅の Figure を作成します。

さて、ひねり:

手動で (マウスを使って) Figure の右下隅をドラッグし、両方のモニターにまたがるようにします (つまり、Figure の幅が 1 つのモニターの幅より大きくなるようにします)。次のコード行を再度実行します。

set(fig,'OuterPosition',[x_pos y_pos x_dim y_dim]) ;

今それは動作します!言い換えると、Figure にモニター間の「障壁を破る」ように強制すると、MATLAB は連続する表示スペース全体を 1 つのキャンバスとして扱います。

マウスを使用してウィンドウのサイズを変更し、もう一度完全に 1 つのモニター内に収まるようにしてからset(fig,'OuterPosition', ...)呼び出しを再度実行すると、元の動作に戻り、その単一のウィンドウ内でのみ Figure のサイズを変更できることに注意してください。

私の質問は、完全にスクリプトでフィギュアを複数のモニターにまたがらせるにはどうすればよいですか? 同様に、呼び出しを使用して設定できるようなSpansMonitors = true、または設定できる図のプロパティはありますか?falseset()

4

1 に答える 1

0

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

図 位置とウィンドウ マネージャ コンピュータのウィンドウ マネージャは、モニタおよび仮想デスクトップ上のウィンドウのレイアウトを制御します。Figure 全体またはその上部境界線が画面外に配置される原因となる Figure ウィンドウを配置する要求が受け入れられない場合があります。ウィンドウ マネージャーは、ウィンドウに特定の最小または最大の幅または高さを強制する場合もあります。このようなアクションにより、Figure の位置が指定したものと異なる場合があり、プラットフォームやウィンドウ マネージャーによって結果が異なる場合があります。

これは、Metacity のウィンドウ マネージャーに関係している可能性があります。

于 2013-05-03T21:18:48.650 に答える