使 uiaxes 内容自动适应容器

问题描述

对于派生自新 matlab.ui.componentcontainer.ComponentContainer 类(在 2020b 中引入)的 GUI 小部件,我希望 uiaxes内容填充父容器。为了让旧版本的人看到问题,我猜下面的代码在没有新类的情况下重现了问题:

% Create a figure with a panel. Panel just for easier visualisation
f = uifigure();
pl = uipanel(f,'Title','foo');
% A grid in the panel
g = uigridlayout(pl,[1,1],'Padding',0);

% The `uiaxes` is added to the grid:
ax = uiaxes(g,'Visible','off','Units','normalized','Position',[0 0 1 1]);

% and some content is added to it:
r = rectangle(ax,[0 0 1 1],'FaceColor','r','Linestyle','none');

红色矩形没有填满整个面板,因为为刻度和标签保留了一些空间。要使矩形填满整个面板,设置轴的 InnerPosition 有助于:

ax.InnerPosition = [0 0 1 1];

但是现在,如果调整图形大小,则重新计算轴的 Position 并且矩形不再填充整个面板。

我正在寻找一种在调整图形大小或某些设置后发出 ax.InnerPosition = [0 0 1 1]方法,以避免重新计算轴位置。但是,由于这是用于其他人将使用的小部件,因此我不能使用 SizeChangedFcnuifigure(在大多数情况下,由于 {{1} AutoResizeChildren 的 } 属性将设置为 uifigure)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)