#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
Щелкните правой кнопкой мыши рабочий стол, разрешение экрана, выберите-монитор, сделайте этот монитор основным монитором.