Как выбрать ось ребенка в MATLAB?
Я искал везде, но я не могу найти сайт, который показывает, как это сделать. Я хочу иметь возможность выбирать объект из осей, когда я щелкаю по нему, чтобы я мог изменить его цвета и прочее.
Я просто не могу понять, как выбрать ребенка, я могу создавать объекты, но не выбирать их.
У меня есть этот кусок кода, который я использую для создания строки:
coord = ginput (2)
x = coord(:,1)
y = coord(:,2)
hline = line(x,y)
Я не уверен, если мне нужно создать объекты в массиве, чтобы я мог выбрать редактировать / удалять их. Я считаю, что мне нужно будет использовать ButtonDownFcn, но, вероятно, я делаю что-то совершенно неправильно.
Буду признателен за любую помощь, если мне не хватает какой-либо информации, пожалуйста, дайте мне знать
Спасибо
1 ответ
Не нужно использовать 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, если у вас (как ожидается) есть другие аргументы, помимо этих двух.