MATLAB:使用WindowButtonMotionFcn为绘图中的多个线对象创建工具提示

时间:2016-04-05 19:32:55

标签: matlab matlab-figure

我想在MATLAB中的树图类似图中为每一行创建工具提示。我使用代码示例创建以下脚本,该脚本显示鼠标是否在线对象上:

function test_mouseover2
f=figure(1);
axis([0 1 0 1]);
L=line([0.2500 0.5000], [0.6 0.8], 'Color','red');    
set(f,'WindowButtonMotionFcn',{@mousemove,L,process});
end

function mousemove(src,ev,L,process)
obj = hittest(src);
if obj == L
    disp('Yes');
else
    disp('No');
end
end

在我的进一步项目中,我需要多个线条。下面的简单示例显示绘制了两条线。但是,命令窗口中的结果始终为"否":

function test_mouseover2
f=figure(1);
axis([0 1 0 1]);
L=line([0.2500 0.5000; 0.125 0.25], [0.6 0.8; 0.2 0.6], 'Color','red');

set(f,'WindowButtonMotionFcn',{@mousemove,L,process});
end

function mousemove(src,ev,L,process)
obj = hittest(src);
if obj == L
    disp('Yes');
else
    disp('No');
end
end

是否有其他方法可以检查鼠标是否在线对象上?

1 个答案:

答案 0 :(得分:1)

mousemove中,测试any(obj == L)。这会测试L中的任何元素是否与obj匹配。由于obj==L最多只有一个非零元素,因此总是评估为false as far as if is concerned

  

当结果为非空并且仅包含非零元素(逻辑或实数)时,表达式为true。否则,表达式为false。