我正在创建一个实时MATLAB演示,我需要通过单击axes
来选择一个兴趣点。一般来说,系统运行良好,我可以使用ButtonDownFcn
修改变量。但是出现以下问题
当我在同一轴上绘制其他数据(如散点图)时,如果我单击散点图而不是没有绘制的axes
,则似乎不会触发ButtonDownFcn
。没有错误。
这是一个问题,因为我的散点图可能非常密集,我想点击的点位于绘图对象的下面。
我如何使所有鼠标点击都由axes
注册,以便每次点击都执行我的ButtonDownFcn
。
您希望利用HitTest
属性禁用所有其他图形对象响应鼠标单击的功能。
如果你只想在axes
上启用点击,那么这样的东西应该可以工作。
% Disable callbacks for all objects within the current axes
set(findall(gca), 'HitTest', 'off')
% Enable click events for the axes and set the buttondownfcn
set(gca, 'HitTest', 'on', 'ButtonDownFcn', callback)