Нет необходимости использовать ginput
и извлекать координаты. Это делается автоматически встроенным «слушателем» в окне рисунка. Вы правы, предполагая, что вы можете использовать свойство ButtonDownFcn
объекта (line, lineseries или другого дескриптора графического объекта).
Попробуйте создать в простой строке от (0,0) до (1,1):
hline = line([0,1],[0,1]) %# create line, save handle in hline
Затем вы можете установить ButtonDownFcn
, например, для дескриптора функции на анонимную функцию:
set( ...
hline, ...
'ButtonDownFcn', @(handle,event)(disp(['You clicked on the line!'])) ...
);
Теперь попробуйте нажать на строку. Следует напечатать текст в командном окне.
Функция должна иметь возможность принимать как минимум два аргумента: (1) дескриптор самого объекта (строки) и (2) «структуру события». Я считаю, что второй аргумент просто пуст, когда вы используете строковые объекты. Но ваша функция все еще должна получать как минимум эти два аргумента (даже если вы их не используете).
Подробнее здесь: http://www.mathworks.com/help/techdoc/ref/line_props.html.
Вы также можете использовать свою собственную функцию (именованная функция в файле):
set( ...
hline, ...
'ButtonDownFcn', @(handle,event)(namedFunction(handle,event)) ...
);
... или вы можете использовать struct-array, если у вас (как ожидается) есть другие аргументы, помимо этих двух.