0

我正在尝试使用 Matlab 2017b 和appdesigner. 我想使用该imline功能将可移动线附加到图像上。但是,appdesigner似乎使用了一种新类型的对象,uiaxesimline函数只会使用对象axes

有效的命令示例:

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

不起作用的命令示例:

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

问题

是否有imline与 appdesigner 一起使用的解决方法?是否仍然可以使用旧axes对象?是否有其他方法可以在 GUI 上使用appdesigner?

4

1 回答 1

1

要访问 a 的底层“旧axes对象” uiaxes,我们需要做的就是struct(tuiaxes).Axes. 继续前进 - 我尝试在 R2018b 中使用它,我有一些好消息和一些坏消息。

  • 好消息是可以通过稍微修改function ( ) 函数来将 a 添加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]);
    

这将导致:

在此处输入图像描述

如果您想要除拖动之外的任何其他功能,您可能必须重写您自己所有与 uifigure 不兼容的部分imline,或者等待一个未知的未来版本为您做这件事。

于 2019-03-13T14:35:58.260 回答