2011-10-11 19 views
9

我想知道是否有任何已知的将MATLAB数字移动到特定显示器的方法。将所有数字移到MATLAB中的特定显示器中

我有下面的代码片段,可以帮助我把所有人物的正面(我从Mathworks公司here得到它):

%% Bring all figures to front 
all_figure_handles = findall(0, 'type', 'figure'); 
for iCount = length(all_figure_handles):-1:1 
    figure(all_figure_handles(iCount)) 
end 

,我想知道如果我能问MATLAB所有的数字移动到另一个屏幕以类似的方式(即使用all_figure_handles的手柄)。另外,如果MATLAB没有意识到监视器分区,我怎样才能将所有数字移动到总屏幕空间的右半部分? (在我的情况下,右半部分应该是右侧的显示器)。

回答

8

从MATLAB图文档:

指定图尺寸和屏幕位置

要创建一个数字窗口是四分之一屏幕的尺寸和定位在左上角,使用根对象的ScreenSize属性来确定大小。屏幕尺寸是四元素矢量:[左边,底部,宽度,高度]:

scrsz = get(0,'ScreenSize'); figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])

为了定位满图窗口包括菜单栏,标题栏,工具栏,和外边缘,可以使用OuterPosition属性以相同的方式。

像这样:

set (gcf(), 'outerposition', [25 500, 560, 470])

,此外,对于根属性的文档中:

MonitorPositions

[XY宽度高度; XY宽度高度]

主要和次要监视器的宽度和高度,以像素为单位。包含连接到计算机的每台显示器的宽度和高度。主监视器的x和y值为0,0,监视器的宽度和高度以像素指定。

在辅助监视器位置被指定为: X =主监视器宽度+ 1个 Y =主监视器高度

一个多头系统上查询图MonitorPositions的值返回上一个单独的每台显示器的位置线。 V =得到(0, 'MonitorPositions') V = X Y宽度高度%主要监视器 X Y宽度高度%辅助监视器

使用多个监视器,当屏幕尺寸属性的值是不一致的。如果你想要特定和一致的值,使用MonitorPositions属性。

+0

注意Windows任务栏的位置和大小。如果我没有记错,它会影响坐标系的原点。 –

+0

我刚刚在我的iMac上尝试'get(0,'monitorpositions'),它排除了菜单栏高度。我认为它在Windows上的工作方式类似。 – Max

+0

还要注意,至少在Mac上,双监视器设置左侧(而右侧)的“主”监视器也会使事情变得复杂,上述文档可能无法工作。 – eykanal

0

注意:您必须在左侧主监视器使用此

V =得到(0, 'MonitorPositions'),否则你会得到不好的坐标。

在右侧主显示器=监视器2 +上命令窗口监视器1

类型

get(0,'MonitorPositions') 

ans = 

     1   1  1920  1080 
    -1919   1   0  1080 

坏坐标上的第二行。你不必获得负数或零坐标

现在, 左侧主显示器=监控+ 1监视器2

get(0,'MonitorPositions') 

ans = 

1921   1  3840  1080 

1   1  1920  1080 

更改Windows主监视器8

右键单击桌面,屏幕分辨率,选择监视器,使此监视器成为主监视器。

相关问题