AppDesigner中ButtonDownFcn在UIaxe绘制曲线后失效的解决方案
一、问题描述
在App Designer中绘制曲线时,常用UIAxes控件进行,但是在使用控件回调函数的ButtonDownFcn时,如果绘制了曲线,无法在已绘制了曲线的区域点击响应响应。
二、问题分析
该问题的原因是,绘图前,ButtonDown响应的控件是UIAxes,所以鼠标点击这个控件的任何区域都可以响应;当绘制曲线后,出现的曲线会覆盖在该控件上面,因为点击曲线所在的区域时,鼠标相应的是曲线而不是UIAxes,所以UIAxes的ButtonDown无法被触发。
三、解决方案
有两种方式
第一种方式是,编写当前曲线的ButtonDown函数,仿照其他的ButtonDown就可以;
第二种方式是,将当前图形的句柄获取后,HitTest和PickableParts设置为不可;
因为第二种很简单,所以写一下,大致思路是先在前面插入私有变量,设置hx;
properties (Access = private) hx %绘制曲线的句柄变量 end
然后在回调函数里面输入下面代码
—————————— app.hx=plot(app.UIAxes,x,y,'-g'); app.hx.HitTest="off"; app.hx.PickableParts="none";