Я предполагаю, что вы пытаетесь установить 'ButtonDownFcn'
окна рисунка , который не будет работать так, как вы ожидаете.Если вы хотите что-то сделать, когда пользователь нажимает на изображение, вы должны убедиться, что вы устанавливаете 'ButtonDownFcn'
изображения , а не окно рисунка илиобъект осей.Обратите внимание на эту строку в документации к свойству рисунка (выделено мной):
Выполняется всякий раз, когда вы нажимаете кнопку мыши, когда указатель находится в окне рисунка, , но не над дочерним объектом (т. Е. Uicontrol, uipanel, axes или axes child) .
Вот почему вы должны установить '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'
, для которого ничего не установлено.