问题描述
对于派生自新 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]
的方法,以避免重新计算轴位置。但是,由于这是用于其他人将使用的小部件,因此我不能使用 SizeChangedFcn
的 uifigure
(在大多数情况下,由于 {{1} AutoResizeChildren
的 } 属性将设置为 uifigure
)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)