使用数字“放大” /“缩小”工具更新appdesigner中的字段

问题描述 投票:1回答:2

[试图找到一种使用图形上的放大/缩小工具来自动更新我的应用程序中的字段的方法。

我的主要问题是,我需要一个事件来触发要更新的字段。我可以使用按钮来拉出新的轴限制,但我觉得应该有办法解决。有人知道我不手动拉动更新图形轴就能检测图形轴的变化吗?

matlab matlab-figure matlab-app-designer
2个回答
0
投票

您是否正在使用App Designer中的轴?如果是这样,据我所知,轴尚未发生任何事件。将来可能会改变。

目前,您可以使用以前的axis对象,它具有更多的设置,并且还可以设置Events。查看MATLAB文档以获取更多信息。https://www.mathworks.com/help/matlab/ref/zoom.html#brux2aq

这里是显示如何使用旧轴对象的示例。在启动功能中,可以添加如下所示的对象。请注意,您必须设置“父级”设置,否则它将创建另一个图形(不是uifigure)。

axes('Parent', app.UIFigure)

0
投票

感谢Oro777向我指出正确的方向。这是我想出的解决方案。创建要应用此功能的图形后,添加

z = zoom; z.ActionPostCallback = {@ZoomPostCallback,app}; z.Enable = 'on';

ZoomPostCallback在哪里

function ZoomPostCallback(~,evd,app)
%Pull new x axes limits and apply them to app edit fields
xLim = evd.Axes.XLim;
app.TimeMinsEditField.Value = round(xLim(1),2);
app.TimeMaxsEditField.Value = round(xLim(2),2);

%Pull new y axes limits and apply them to app edit fields
yLim = evd.Axes.YLim;
app.FreqMinHzEditField.Value = round(yLim(1));
app.FreqMaxHzEditField.Value = round(yLim(2));

%Run changesAxes to ensure all other fields are updated
changeAxes(app)
end

效果很好。希望这可以帮助其他人。这确实阻碍了zoom具有pre和post回调功能的事实。

© www.soinside.com 2019 - 2024. All rights reserved.