如何在MatLab中通过鼠标位置/行为获得绘图线句柄

时间:2014-09-12 07:56:20

标签: matlab user-interface

我正在编写一个GUI程序,其中包含一个轴和多行。

是否可以通过鼠标单击/当前鼠标位置选择线条(仅线条,没有其他组件)?

我想要实现它:

set(obj.fh,'WindowButtonDownFcn',@(src, event)mouseSelection(obj, src, event));

但我不知道我应该填写函数mouseSelection

2 个答案:

答案 0 :(得分:0)

您无需在高级别窗口上操作。直接在线路级别操作要简单得多。 可能的解决方案是使用属性侦听器:

function test

figure('HitTest','on')
axes('HitTest','on')
h = plot([1,2,3],[3,2,7],'HitTest','on');

el = addlistener(h,'Selected','PostSet',@callback);

plotedit


function callback(schema,EventData)

if strcmp(EventData.AffectedObject.Selected,'on')
    disp('OK')
end

选择线条时,此选项打印正常。还有其他方式,例如使用该行的ButtonDownFunction,但结果略有不同。

答案 1 :(得分:0)

这可以简单地实现,例如

plot(1:10, 'ButtonDownFcn', @(h,d) fprintf('my blue line\n'))
hold on
plot(10:-1:1, 'r', 'ButtonDownFcn', @(h,d) fprintf('my red line\n'))