我正在编写一个GUI程序,其中包含一个轴和多行。
是否可以通过鼠标单击/当前鼠标位置选择线条(仅线条,没有其他组件)?
我想要实现它:
set(obj.fh,'WindowButtonDownFcn',@(src, event)mouseSelection(obj, src, event));
但我不知道我应该填写函数mouseSelection
答案 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'))