Переместить все цифры на определенный монитор в MATLAB

#matlab

#matlab

Вопрос:

Мне было интересно, существует ли какой-либо известный способ перемещения цифр MATLAB на конкретный монитор.

У меня есть следующий фрагмент, который помогает мне вывести все цифры на передний план (я получил его из Mathworks здесь):

 %% 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 не знает о разделении монитора, как я могу переместить все цифры, скажем, в правую половину общего пространства экрана? (в моем случае правой половиной должен быть монитор справа).

Ответ №1:

Из документации по рисункам Matlab:

Указание размера фигуры и расположения экрана

Чтобы создать окно фигуры размером в четверть размера вашего экрана и расположенное в верхнем левом углу, используйте свойство screenSize корневого объекта для определения размера. 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

[x y ширина высота; x y ширина высота]

Ширина и высота основного и дополнительного мониторов в пикселях. Содержит ширину и высоту каждого монитора, подключенного к вашему компьютеру. Значения x и y для основного монитора равны 0, 0, а ширина и высота монитора указаны в пикселях.

Положение дополнительного монитора задается следующим образом: x = ширина основного монитора 1 y = высота основного монитора

Запрос значения figure MonitorPositions в многоглавой системе возвращает позицию для каждого монитора в отдельной строке. v = get(0,’MonitorPositions’) v = x y ширина высота % Основной монитор x y ширина высота % Дополнительный монитор

Значение свойства screenSize несовместимо при использовании нескольких мониторов. Если вам нужны конкретные и согласованные значения, используйте свойство MonitorPositions .

Комментарии:

1. Обратите внимание на расположение и размер панели задач Windows. Если я правильно помню, это может повлиять на начало координат системы координат.

2. Я только что попробовал ‘get (0, ‘monitorpositions’) на своем iMac, и это исключило высоту строки меню. Я предполагаю, что это будет работать аналогично в Windows.

3. Обратите внимание также, что, по крайней мере, на Mac, наличие «основного» монитора слева (vs справа) при настройке с двумя мониторами также усложнит ситуацию, и приведенная выше документация, вероятно, не будет работать.

Ответ №2:

Примечание: для использования этого у вас должен быть основной монитор слева

v = get(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

Щелкните правой кнопкой мыши рабочий стол, разрешение экрана, выберите-монитор, сделайте этот монитор основным монитором.