我在previous question上得到了答案。但是,要獲得這些座標(在axis equal
的情況下,軸箱的尺寸和位置),我們需要做一些相對麻煩的計算。但是,由於MATLAB圖形基於Java,我們可以訪問Java屬性。 我已經發現,如果我們使用這個在MATLAB:如何獲取JFrame中軸框的邊界?
jFrame = get(gcf,'JavaFrame');
BoxHeight = jFrame.getAxisComponent.getHeight;
BoxWidth = jFrame.getAxisComponent.getWidth;
我們可以得到的圖形窗口的寬度和高度(也許這可以與軸的部件相關聯)。但是在像素單位的情況下它們與get(gcf, 'Position')
或get(gca, 'Position')
的值不同。我不是Java的專家(我也未嘗試使用Altman的findjobj
來查找這些屬性)。
因此,我有兩個問題:
- 爲什麼圖窗口的高度和寬度(也許這是軸框)從MATLAB和Java的屬性導出是不一樣的(至少它們是Java中的整數和MATLAB中的浮點數)?
例如:
hf=figure('units','pixels'); ha=gca(hf);
set(ha,'units','pixels');
get(hf,'position')
get(ha,'position')
ANS =
488 342 560 420
73.8000 47.2000 434.0000 342.3000`
而BoxHeight=525
,BoxWidth=700
和換檔始終爲零(alignmentX=0.0
和alignmentY=0.0
)。
- 如何獲得使用Java在MATLAB 中繪製的窗口軸的確切大小和位置?
不是你提到的相對於圖的框架?從我看到的例子中,java框架組件總是與圖的尺寸相匹配。至於軸的高度/寬度(以相對於該圖標準化的單位),它們應該在ha.Position中,其中「ha」是相應的軸手柄。你可以使用Matlab獲得精確的像素大小,通過設置ha.Units ='像素',然後用ha.Position = [x y width height]設置所需的大小。 – serigado
你在什麼操作系統上?在Linux上,它們返回相同的大小。 – Suever
嗨serigado!非常感謝您的關注。我的Matlab(get(gca,'Position'))給出像素的浮點數(set(gca,'Units','Pixels'))。我爲我的問題添加了一個例子。 –