2011-10-11 7 views
9

Zastanawiam się, czy istnieje jakiś znany sposób przenoszenia figur MATLAB do określonego monitora.Przeniesienie wszystkich figur do określonego monitora w MATLAB

Mam następujący fragment kodu, który pomaga mi przynieść wszystkie dane do przodu (mam go od 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 

I zastanawiałem się, czy mogę prosić MATLAB, aby przenieść wszystkie dane do innego ekranu w podobny sposób (tj. używając uchwytów z all_figure_handles).

Alternatywnie, jeśli MATLAB nie ma wiedzy o partycjonowaniu monitora, w jaki sposób mogę przenieść wszystkie liczby do, powiedzmy, prawej połowy całkowitej powierzchni ekranu? (w moim przypadku prawą połowę powinien stanowić monitor po prawej).

Odpowiedz

8

Z dokumentacji rysunku Matlab:

Określanie Rysunek Rozmiar i ekran Lokalizacja

Aby utworzyć okno postać, która jest jedna czwarta wielkość ekranu i jest umieszczony w lewym górnym rogu, użytkowania właściwość ScreenSize obiektu root, aby określić rozmiar. Rozmiar ekranu jest cztery element wektora [lewej, dolnej, szerokość, wysokość]

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

do umieszczenia całego okna rysunku tym menu, bar tytułowego, paski narzędzi i zewnętrznych brzegów, użyć Właściwość OuterPosition w taki sam sposób.

Jak to:

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

a ponadto w dokumentacji Properties root:

MonitorPositions

[xy wysokość szerokość; xy wysokość szerokość]

Szerokość i wysokość monitorów podstawowych i pomocniczych w pikselach. Zawiera szerokość i wysokość każdego monitora podłączonego do komputera. Wartości xiy dla monitora głównego to 0, 0, a szerokość i wysokość monitora są określone w pikselach.

Wtórne Kontrola położenia określa się jako: X = monitor Główny szerokość wysokość + 1 Y = monitor Główny

odpytywanie wartość MonitorPositions rysunku w systemie Multiheaded zwraca położenie każdego monitora na oddzielnym linia. się V = 0, ('') MonitorPositions V = szerokość x wysokość Y% pierwszorzędowych monitora x y szerokość wysokość% wtórnego monitora

Wartość własności ekranu telewizora jest niespójne z wykorzystaniem wielu monitorach. Jeśli chcesz mieć określone i spójne wartości, użyj właściwości MonitorPositions.

+0

Należy sprawdzić lokalizację i rozmiar paska zadań systemu Windows. Jeśli dobrze pamiętam, może to wpłynąć na pochodzenie układu współrzędnych. –

+0

Po prostu próbowałem "get (0," monitorpositions ") na moim iMacu, a to wykluczało wysokość paska menur. Zakładam, że będzie działać podobnie w systemie Windows. – Max

+0

Należy również zauważyć, że przynajmniej na komputerze Mac, posiadanie monitora "podstawowego" po lewej (a po prawej stronie) konfiguracji z dwoma monitorami również komplikuje sprawę, a powyższa dokumentacja prawdopodobnie nie będzie działać. – eykanal

0

Uwaga: Musisz mieć swój podstawowy monitora po lewej aby skorzystać z tej

v = get (0, '') MonitorPositions inaczej dostaniesz złe współrzędne.

Przykład

podstawowej monitora w prawo = Monitor 2 + 1 monitora

typu w oknie polecenia

get(0,'MonitorPositions') 

ans = 

     1   1  1920  1080 
    -1919   1   0  1080 

złe współrzędne w drugim rzędzie. Nie trzeba, aby uzyskać ujemny lub zerowy współrzędne

Teraz pierwotnego monitora na lewo = 1 + monitor monitor 2

get(0,'MonitorPositions') 

ans = 

1921   1  3840  1080 

1   1  1920  1080 

Aby zmienić monitor podstawowy w systemie Windows 8

Kliknij prawym przyciskiem pulpit, rozdzielczość ekranu, wybierz monitor, ustaw ten monitor jako główny monitor.

Powiązane problemy