MATLAB Answers

Mouse Click callback on an image - temporarily disable

31 views (last 30 days)
Jason
Jason on 14 Aug 2019
Commented: Jason on 14 Aug 2019
Hello, I have a GUI (created by guide) where everytime I load an image and display in an axes component I assign a button down function (called ImageClickCallback) so everytime I click on the image my function ImageClickallback executes. This all works fine.
axes(handles.axes1)
imageHandle=imshow(img,[low,high]); % Display Image
set(imageHandle,'ButtonDownFcn',@ImageClickCallback); % Assign callback to ButtonDown event
I am wanting to now use a mouse click on the image to draw lines (I know how to do this) but everytime I click the image the original ImageClickCallback executes. So my question is can I pause the original ButtonDownFcn callback ?
Thanks

  0 Comments

Sign in to comment.

Accepted Answer

Geoff Hayes
Geoff Hayes on 14 Aug 2019
Jason - why not just remove the original callback just prior to wanting to draw the lines
set(imageHandle,'ButtonDownFcn',[]);
You could then restore it later when needed.

  7 Comments

Show 4 older comments
Jason
Jason on 14 Aug 2019
OK, have tried this:
In the function that I define image Handle
imageHandle=imshow(A,[lo hi]);
handles.imH=imageHandle;
guidata(hObject, handles);
Then in the 2nd function where I want to disable the ButtonDownFcn
imageHandle=handles.imH;
set(imageHandle,'ButtonDownFcn ',[]); %temporarily turn off current ButtonDown event
But I get the following error message
Error using matlab.graphics.primitive.Image/set
The property name 'ButtonDownFcn ' is not a valid MATLAB identifier.
Error in ArchimedesIQC>pushbutton199_Callback (line 15392)
set(imageHandle,'ButtonDownFcn ',[]); %temporarily turn off current ButtonDown event
Geoff Hayes
Geoff Hayes on 14 Aug 2019
The problem might be because of the trailing space character in the string
'ButtonDownFcn '
Try replacing with
set(handles.imH,'ButtonDownFcn',[]);
Jason
Jason on 14 Aug 2019
Yes thts it....thanks for spotting the error
Jason

Sign in to comment.

More Answers (0)