Ale*_*vin 11 java matlab swing
我在上一个问题上得到了答案.但是,为了获得这些坐标(轴箱的大小和位置axis equal),我们需要做一些相对繁琐的计算.但是,由于MATLAB图形基于Java,我们可以访问Java属性.我发现如果我们在MATLAB中使用它:
jFrame = get(gcf,'JavaFrame');
BoxHeight = jFrame.getAxisComponent.getHeight;
BoxWidth = jFrame.getAxisComponent.getWidth;
Run Code Online (Sandbox Code Playgroud)
我们可以获得图形窗口的宽度和高度(也许这可以与轴的组件相关联).但它们与像素单元的值不同get(gcf, 'Position')或get(gca, 'Position')在像素单元的情况下不同.我不是Java的专家(我也试图使用Altman找到这些属性,但未成功findjobj).
因此,我有两个问题:
例如:
hf=figure('units','pixels'); ha=gca(hf);
set(ha,'units','pixels');
get(hf,'position')
get(ha,'position')
Run Code Online (Sandbox Code Playgroud)
ans =
488 342 560 420
73.8000 47.2000 434.0000 342.3000`
Run Code Online (Sandbox Code Playgroud)
然而BoxHeight=525,BoxWidth=700转变始终为零(alignmentX=0.0和alignmentY=0.0).
在 MATLAB 中, afigure和 anaxes都有一个名为 的属性Position,但它不是同一件事:
get(hf,'position')将为您提供图形窗口在屏幕上的位置。
get(ha,'position')将返回图形窗口中轴的位置。
因此,代码的输出
hf=figure('units','pixels');
ha=gca(hf);
set(ha,'units','pixels');
hfPos = get(hf,'position')
haPos = get(ha,'position')
Run Code Online (Sandbox Code Playgroud)
答案=
hfPos = 520 378 560 420
haPos = 73.8000 47.2000 434.0000 342.3000
Run Code Online (Sandbox Code Playgroud)
必须这样解释:

但是,我不知道为什么get(ha,'position')返回浮点数。
在我的系统(Win7 Pro、MATLAB R2016a、Java 1.7.0_60-b19)上,以下代码发出警告:
get(gcf,'JavaFrame');
Warning: figure JavaFrame property will be obsoleted in a future release. For more information see the JavaFrame resource on the MathWorks web site.
Run Code Online (Sandbox Code Playgroud)
因此我不会依赖使用它。相反,我将使用上述信息来获取 MATLAB 中绘制的轴的大小和位置。
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |