Использование imline с uiaxes - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать приложение, используя Matlab 2017b с appdesigner.Я хочу прикрепить подвижную линию к изображению с помощью функции imline.Однако appdesigner, по-видимому, использует объект нового типа, uiaxes, тогда как функция imline будет использовать только объект axes.

Пример команды, которая работает:

figure; taxes = axes;  imline(taxes, [0 0], [0 1]);

Пример команды, которая не работает:

figure; tuiaxes = uiaxes;  imline(tuiaxes, [0 0], [0 1]);

Вопросы

Есть ли обходной путь для использования imline с appdesigner?Можно ли по-прежнему использовать старый объект axes?Есть ли какой-нибудь другой способ иметь интерактивные строки в графическом интерфейсе, используя appdesigner?

1 Ответ

0 голосов
/ 13 марта 2019

Чтобы получить доступ к базовому «старому axes объекту» uiaxes, все, что нам нужно сделать, это struct(tuiaxes).Axes.Двигаясь дальше - я попытался поиграть с этим в R2018b, и у меня есть хорошие и плохие новости.

  • Хорошая новость заключается в том, что один может добавить imline кфигура MATLAB, немного изменив функцию imline (<MATLAB>\R2018b\toolbox\images\imuitools\imline.m).
  • Плохая новость заключается в том, что она не будет обладать большинством функций, к которым вы могли привыкнуть.

Вот самые основные шаги:

  1. Создайте копию imline.m, назовем ее ui_imline.m.
  2. Комментарий из строк 260-261 (относится кcmenu) и строка 317 (updateAncestorListeners(...)).
  3. Измените код следующим образом:

    uifigure; tuiaxes = uiaxes; ui_imline(struct(tuiaxes).Axes, [0 0], [0 1]);
    

Это приведет к:

enter image description here

Если вам нужны какие-либо другие функции, кроме перетаскивания, вам, вероятно, придется переписать все несовместимые с uifigure биты imline самостоятельно или дождатьсянеизвестный будущий релиз, который сделает это за вас.

...