2016-06-07 85 views
-1

我正在创建一个实时MATLAB演示,我需要通过点击axes来选择一个感兴趣的点。一般来说,系统工作正常,我可以使用ButtonDownFcn修改变量。但是,发生以下问题当绘图对象被选中时轴没有被执行ButtonDownFcn

当我在同一轴上绘制其他数据(例如散点图)时,如果我单击散点图而不是axes(其中没有绘图),似乎不会触发ButtonDownFcn 。没有错误。

这是一个问题,因为我的散点图可能非常密集,我想点击的点位于图元对象的下方。

我该如何做到这一点,以便所有的鼠标点击都被axes注册,以便我的ButtonDownFcn在每次点击时都被执行。

+0

请提供一个[mcve] – excaza

+0

该行还有一个按钮点击回调。你可能想禁用它。我认为你可以关闭一个'hittest'属性(将其设置为false)。 – siliconwafer

回答

1

您想利用HitTest property禁用所有其他图形对象响应鼠标单击的能力。

如果你想只启用点击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)