本总结意在解决如下问题:利用定时器回调函数或串口回调函数在GUI指定的axes上绘图时,曲线或图片总是不显示在指定的坐标轴上,总是会弹出新的窗口显示。
利用guide来创建GUI程序时,可能大家对figure的
HandleVisibility属性以及axes的NextPlot属性关注的不多。figure的HandleVisibility属性有三个属性
值:on\off\callback。前两个的含义顾名思义,其作用可以看帮助文件,在此不详述。最后一个callback属性值,它
是确保该figure的句柄(handle)对figure内的控件的回调函数以及回调函数内定义的函数来说是‘可见’的,而对于其它例如通过命令行来访问的用户来说是‘不可见’的,这样可以确保该
figure不被无意中删除或修改其中的内容。
可见,figure的HandleVisibility属性的callback属性值带有明显的保护figure的作用,是有益的。但是这种保护机制对于
使用定时器或串口自定义回调函数来绘制曲线的用户来说,就会带来麻烦。
因为定时器或串口对象不是figure所包含的对象,所以其回调函数在调用figure内的axes来绘图时,就会发现找不到
该figure的handle,以为该figure对象不存在,于是就会新建figure窗口,在其中创建axes来显示的曲线。
根据以上分析,如果用户在利用定时器或串口回调函数绘制图形时出现上述问题,解决办法如下:
1、fugure的‘HandleVisibily’属性值默认为‘callback’,把它改为‘on’;
2、axes的‘NextPlot’的属性值默认为‘replace’,改为‘add’。
3、在绘图语句的前面使用语句axes(handles.axes1);%'axes1'为axes的'tag'
先前有会员在编程时遇到同样的问题,根据以上方法,问题顺利解决。
希望有遇到类似问题的会员可以参考该帖子。:-)
以上是个人经验,如有不足,欢迎指正修改,多谢。
阅读(1186) | 评论(0) | 转发(0) |