Как выбрать дочерние оси в MATLAB? - PullRequest
1 голос
/ 17 февраля 2011

Я искал везде, но я не могу найти сайт, который показывает, как это сделать. Я хочу иметь возможность выбирать объект из осей, когда я щелкаю по нему, чтобы я мог изменить его цвета и прочее.

Я просто не могу понять, как выбрать ребенка, я могу создавать объекты, но не выбирать их.

У меня есть этот фрагмент кода, который я использую для создания строки:

coord = ginput (2)
x = coord(:,1)
y = coord(:,2)
hline = line(x,y)

Я не уверен, если мне нужно создать объекты в массиве, чтобы я мог выбрать редактировать / удалять их. Я считаю, что мне нужно использовать ButtonDownFcn, но, вероятно, я делаю что-то совершенно неправильно.

Буду признателен за любую помощь. Если мне не хватает какой-либо информации, пожалуйста, дайте мне знать

Спасибо

1 Ответ

2 голосов
/ 17 февраля 2011

Нет необходимости использовать 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, если у вас (как ожидается) есть другие аргументы, помимо этих двух.

...