关于 MATLAB App Designer 中 UIFigure 添加鼠标点击的回调函数 WindowButtonDownFcn 和 直接 ButtonDownFcn 的区别
使用 MATLAB App Designer 设计交互界面,UIFigure 对象有两种 添加回调函数的方式
(1)直接 ButtonDownFcn
(2)WindowButtonDownFcn
其中,UIFigure 的 WindowButtonDownFcn 函数是当鼠标在 UIFigure 中点击时(无论是左键还是右键),程序调用的回调函数。这时,程序不管鼠标是在界面哪一个控件的区域内,只要点击,都调用该函数;
而 ButtonDownFcn 则是当控件位于该控件的区域内时,点击时所调用的函数。表面看起来似乎一样。主要区别在于,当 UIFigure 界面中包含如控件坐标区时,在该控件内单击鼠标,ButtonDownFcn 回调函数不起作用,而 WindowButtonDownFcn 起作用。如下图
pt = app.UIAxes.CurrentPoint;
xp = pt(1,1)
yp = pt(1,2)
% 如果当前点在 UIAxes 显示框的内部
% 此处 0 1 是因为把 UIAxes 显示框大小范围手动限制为了 0-1,如果设置为其他值,则相应更改即可
if xp >= 0 &&...
xp <= 1 &&...
yp >= 0 &&...
yp <= 1
app.X.Value = num2str(xp);
app.Y.Value = num2str(yp); %-axes_pos(1)
plot(app.UIAxes,xp ,yp,'k-o','MarkerFaceColor','y','LineWidth',2);