文档

为什么ResizeFcn的行为发生了改变?

行为的改变ResizeFcn回调会反映图形和容器的位置和布局的变化,以使它们的行为彼此之间和跨所有平台更加一致。

程序启动后返回错误

从R2014b开始ResizeFcn回调函数可能在程序文件中的所有变量都被赋值之前执行。当这种情况发生时ResizeFcnCallback返回一个错误。

例如,这个程序有一个ResizeFcn函数返回的变量的回调函数createGUI函数。

函数mygui hs = createGUI;函数处理= createGUI创造人物和它的孩子图(f =“标签”“图”...“ResizeFcn”@doResizeFcn,...“可见”“关闭”);u = uicontrol (“父”f“标签”“热”);处理= guihandles (f);%使数字可见集(f,“可见”“上”);结束函数doResizeFcn(变长度输入宗量)长度(hs)结束结束
在新的图形系统中运行这个程序会导致一个错误,因为海关不存在的时候doResizeFcnCallback第一次执行(当图变得可见时)。
mygui
未定义函数或变量“hs”。Error in mygui/doResizeFcn (line 18) length(hs) Error using mygui/createGUI (line 14) Error while evaluating Figure SizeChangedFcn

要纠正这个问题,请在分配回调引用的所有变量之后使图可见。在本例中,在调用createGUI函数。

函数mygui hs = createGUI;使数字可见集(hs.fig,“可见”“上”);函数处理= createGUI创造人物和它的孩子图(f =“标签”“图”...“ResizeFcn”@doResizeFcn,...“可见”“关闭”);u = uicontrol (“父”f“标签”“热”);处理= guihandles (f);结束函数doResizeFcn(变长度输入宗量)长度(hs)结束结束

不可见组件不活动

从R2014b开始,改变不可见容器的大小,如图形、面板、按钮组,不会触发ResizeFcn回调,直到容器变得可见。

在MATLAB以前的版本中®,ResizeFcn当容器的大小发生变化时执行Callback,而不管它是否可见。

控件可以控制图形和容器的可见性可见属性:

  • 一个数字是可见的,如果它可见属性设置为“上”

  • uipanel或uibuttongroup是可见的可见属性及其祖先的属性被设置为“上”.例如,父类是uipanel的uibuttongroup在“可见”属性的uibuttongroup, uipanel和图形都被设置为“上”

当外部边界或可绘制区域改变时的意外行为

从R2014b开始,更改图形或容器的外部边界不会触发ResizeFcn回调。

例如,这个数字ResizeFcn回调函数不会在新的图形系统中执行OuterPosition(通过删除菜单栏)。然而,这个回调函数在之前的MATLAB版本中执行。

图(f =“ResizeFcn”“显示缩放”);集(f,菜单条的“没有”);

从R2014b开始ResizeFcnCallback只在容器的可绘制区域(内部区域)发生变化时执行。之前的MATLAB版本可能不会执行ResizeFcn当绘制区域改变时回调。

例如,这个uipanelResizeFcn当你通过增加边框宽度来改变ui面板的绘制区域时,回调函数会在新的图形系统中执行。在以前的版本中运行此代码时,回调不会执行。

p = uipanel (“ResizeFcn”“显示缩放”);集(p,“BorderWidth”3);

相关的话题

这个话题有用吗?