我想在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
是否有其他方法可以检查鼠标是否在线对象上?
答案 0 :(得分:1)
在mousemove
中,测试any(obj == L)
。这会测试L
中的任何元素是否与obj
匹配。由于obj==L
最多只有一个非零元素,因此总是评估为false
as far as if
is concerned:
当结果为非空并且仅包含非零元素(逻辑或实数)时,表达式为true。否则,表达式为false。