Я предполагаю, что вы пытаетесь установить 'ButtonDownFcn'
окна фигуры, которая не будет работать, как вы ожидаете. Если вы хотите что-то сделать, когда пользователь нажимает на изображение, вы должны убедиться, что вы устанавливаете 'ButtonDownFcn'
изображения , а не окна фигуры или объекта осей. Обратите внимание, эту линию в figure property documentation (выделено мною):
Запускает при нажатии кнопки мыши, когда указатель находится в окне фигуры, но не над дочерним объектом (т.е. UIControl, uipanel , оси или оси).
Вот почему вы должны установить 'ButtonDownFcn'
для каждого объекта вы хотите работать. Установка его для окна рисунка не заставит его работать автоматически для каждого объекта на рисунке. Вот пример, который устанавливает 'ButtonDownFcn'
для фигуры и объекта изображения:
img = imread('peppers.png'); %# Load a sample image
hFigure = figure; %# Create a figure window
hImage = image(img); %# Plot an image
set(hFigure,'ButtonDownFcn',... %# Set the ButtonDownFcn for the figure
@(s,e) disp('hello'));
set(hImage,'ButtonDownFcn',... %# Set the ButtonDownFcn for the image
@(s,e) disp('world'));
Обратите внимание, как нажав внутри и снаружи изображение отображается другое сообщение, поскольку каждый называет 'ButtonDownFcn'
для другого объекта. Также обратите внимание, что если вы нажмете на метку метки метки одной из осей, ничего не отображается. Это связано с тем, что объект осей имеет свой собственный 'ButtonDownFcn'
, который не был настроен ни на что.