Я получил ответ на предыдущий вопрос . Однако для получения этих координат (размер и положение окна оси в случае axis equal
) нам нужно сделать некоторые относительно громоздкие вычисления. Однако, поскольку графика MATLAB основана на Java, мы можем получить доступ к свойствам Java.
Я обнаружил, что если мы будем использовать это в MATLAB:
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
).
- Как получить точный размер и положение осевых окон, нанесенных в MATLAB с помощью Java?