在uiaxes中使用imline

时间:2018-10-08 19:52:01

标签: matlab interactive axes matlab-gui matlab-app-designer

我正在尝试使用带有appdesigner的Matlab 2017b设计应用程序。我想使用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在GUI上进行交互式交互?

1 个答案:

答案 0 :(得分:1)

要访问axes的基础“旧uiaxes对象”,我们要做的就是struct(tuiaxes).Axes。继续-我尝试在R2018b中玩这个游戏,但我有一些好消息和坏消息。

  • 好消息是,可以通过稍微修改imline函数(imline)函数向MATLAB图形中添加<MATLAB>\R2018b\toolbox\images\imuitools\imline.m li>
  • 坏消息是它不会具有您可能习惯的大多数功能。

这是最基本的步骤:

  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

如果除了拖动之外还需要其他功能,则可能必须自己重写imline的所有不兼容uifigure的位,或者等待将来的未知发行版为您完成。