在MATLAB中将所有数字移动到特定的监视器

时间:2011-10-11 20:43:07

标签: 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不知道监视器分区,我怎么能将所有数字移动到总屏幕空间的右半部分? (在我的情况下,右半部分应该是右边的监视器。)

2 个答案:

答案 0 :(得分:8)

来自Matlab图文档:

  

指定图大小和屏幕位置

     

要创建一个四分之一大小的图形窗口并位于左上角,请使用根对象的ScreenSize属性来确定大小。 ScreenSize是一个四元素向量:[left,bottom,width,height]:

     

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

     

要定位包含菜单栏,标题栏,工具栏和外边缘的完整图形窗口,请以相同方式使用OuterPosition属性。

像这样:

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

此外,在Root Properties的文档中:

  

MonitorPositions

     

[x y宽度高度; x y宽度高度]

     

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

     

辅助监视器位置指定为:   x =主监视器宽度+ 1   y =主监视器高度

     

在多头系统上查询图形MonitorPositions的值会在单独的一行上返回每个监视器的位置。   v = get(0,'MonitorPositions')   v =    x y width height%主监视器    x y width height%辅助监视器

     

使用多个监视器时,ScreenSize属性的值不一致。如果需要特定且一致的值,请使用MonitorPositions属性。

答案 1 :(得分:0)

  

注意:您必须让左侧的主显示器才能使用此

     

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

     

示例

     

右侧的主监视器=监视器2 +监视器1

在命令窗口输入

2001-10-18T08:47:00
  

第二行的坐标不好。你不必得到负坐标或零坐标

     

现在,   左侧的主监视器=监视器1 +监视器2

get(0,'MonitorPositions')

ans =

       1           1        1920        1080
   -1919           1           0        1080
  

更改Windows 8上的主监视器

     

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