Use sprintf in callback function to get an output variable
1 view (last 30 days)
Show older comments
Hello,
I've got a very simple callback function 'countclicks', which displays the type of click (normal,alt,extend or open) and its coordinates in the command window when a mouse click is performed on my figure. How can I use sprintf to get the type of click and the associated coordinates in a seperate variable?
Thank you!
function countclicks(gcbo,eventdata,handles)
disp(get(gcf,'SelectionType'))
disp(get(gca,'CurrentPoint'))
end
0 Comments
Answers (1)
Arthur Roué
on 5 Aug 2020
function countclicks(gcbo,eventdata,handles)
strSelectionType = get(gcf,'SelectionType');
XY = get(gca,'CurrentPoint');
sprintf('Type : %s, X = %d / Y = %d', strSelectionType, XY(1), XY(2))
end
3 Comments
Steven Lord
on 5 Aug 2020
Callback functions do not return any output arguments. So where do you want to "get a variable" that captures the click location?
I think you may want to use the ginput function.
Arthur Roué
on 5 Aug 2020
You can store thoses values in variable shared with the GUI main function and its nested functions.
function myGUI()
% Create a local variable shared with nested function
XY = []
% Creat an axe with a callback
hAxe = axes(.., 'ButtonDownFcn', @countclicks)
function countclicks(src, evt)
strSelectionType = get(src.Parent,'SelectionType'); % src.Parent = figure handme
XY = get(src,'CurrentPoint');
sprintf('Type : %s, X = %d / Y = %d', strSelectionType, XY(1), XY(2))
end
end
See Also
Categories
Find more on Graphics Object Programming in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!