将 imline 与 uiaxes 一起使用
Using imline with uiaxes
我正在尝试使用 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
?
在 GUI 上创建交互式行
要访问 uiaxes
的底层 "old axes
object",我们需要做的就是 struct(tuiaxes).Axes
。继续 - 我尝试在 R2018b 中玩这个,我有一些好消息和一些坏消息。
- 好消息是可以通过修改
imline
函数(<MATLAB>\R2018b\toolbox\images\imuitools\imline.m
)函数将imline
添加到MATLAB图形中有点。
- 坏消息是它不会拥有您可能习惯的大部分功能。
以下是最基本的步骤:
- 创建
imline.m
的副本,我们将其命名为 ui_imline.m
。
- 注释掉第 260-261 行(与
cmenu
相关)和第 317 行(updateAncestorListeners(...)
)。
修改你的代码如下:
uifigure; tuiaxes = uiaxes; ui_imline(struct(tuiaxes).Axes, [0 0], [0 1]);
这将导致:
如果您想要除拖动之外的任何其他功能,您可能必须自己重写 imline
中所有与 uifigure 不兼容的部分,或者等待未知的未来版本为您完成。
我正在尝试使用 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
?
要访问 uiaxes
的底层 "old axes
object",我们需要做的就是 struct(tuiaxes).Axes
。继续 - 我尝试在 R2018b 中玩这个,我有一些好消息和一些坏消息。
- 好消息是可以通过修改
imline
函数(<MATLAB>\R2018b\toolbox\images\imuitools\imline.m
)函数将imline
添加到MATLAB图形中有点。 - 坏消息是它不会拥有您可能习惯的大部分功能。
以下是最基本的步骤:
- 创建
imline.m
的副本,我们将其命名为ui_imline.m
。 - 注释掉第 260-261 行(与
cmenu
相关)和第 317 行(updateAncestorListeners(...)
)。 修改你的代码如下:
uifigure; tuiaxes = uiaxes; ui_imline(struct(tuiaxes).Axes, [0 0], [0 1]);
这将导致:
如果您想要除拖动之外的任何其他功能,您可能必须自己重写 imline
中所有与 uifigure 不兼容的部分,或者等待未知的未来版本为您完成。