Выполнение текста, который появляется, когда зависает над объектом выполнимо, но может быть весьма привлекательным. Для этого потребовалось бы установить WindowButtonMotionFcn
callback для вашей фигуры, которая будет постоянно проверять CurrentPoint
property фигуры, чтобы определить, была ли она в пределах ваших осей, представляющих интерес, и если да, то проверьте CurrentPoint
property этих осей и вычислите, какой объект сюжетного объекта ближе всего.
Если вы готовы, чтобы позволить пользователю мыши, а не просто парения для отображения текста, что гораздо проще. Вы можете установить ButtonDownFcn
callback каждой построенной строки для отображения текста в определенном месте. Вот пример, который создает два объекта строки и присваивает им функцию обратного вызова, которая будет отображать Tag
линии, которая щелкнула в точке курсора:
function line_click_example
hAxes = axes('NextPlot', 'add', 'ButtonDownFcn', @clear_text);
hLines = line(hAxes, [1:10; 1:10].', [rand(10, 1) rand(10, 1)+1]);
set(hLines, 'ButtonDownFcn', @line_click_fcn, ...
'Tag', {'Line 1'; 'Line 2'});
hText = text(hAxes, 0, 0, '');
function line_click_fcn(hSource, ~)
cursorPosition = get(get(hSource, 'Parent'), 'CurrentPoint');
set(hText, 'Position', cursorPosition(1, [1 2]), ...
'String', get(hSource, 'Tag'));
end
function clear_text(~, ~)
set(hText, 'Position', [0 0], 'String', '');
end
end
Здесь я также установить ButtonDownFcn
оси так что он очистит текстовый объект, а это означает, что щелчок по любой области осей, которая не находится над одной из двух линий, удалит отображаемый текст. Также обратите внимание, что с line_click_fcn
и clear_text
находятся nested functions, они оба имеют доступ к hText
и смогут его модифицировать.