Clear Filters
Clear Filters

How to get mouse coordinates in GUI (AppDesigner) ?

12 views (last 30 days)
I am using MATLAB App Designer and have inserted axes into the app.
When the user clicks a button, I want them to be able to then select a point on the axes. Basically, the functionality should be identical to ginput.
How should I do this? I am aware that related questions have been asked but am honestly not able to understand parts of those or the solutions don't seem to work well. It looks to be something to do with using ButtonDownFcn callback and CurrentPosition but I'm not able to understand how to use these.
Thanks for your help!
Mohit.

Accepted Answer

Ameer Hamza
Ameer Hamza on 2 Oct 2020
Edited: Ameer Hamza on 2 Oct 2020
Check the attached app for the demo.
  2 Comments
Mohit Kumar
Mohit Kumar on 5 Oct 2020
Edited: Mohit Kumar on 8 Oct 2020
EDIT : My code seemed to not be working because I was using tabs in my app. Removing the tabs made the code work just fine. Most weird.
Hi Ameer, thanks for the answer. It works perfectly in the app that you sent. However, when I implement it in my code, the Y coordinate seems to be "shifted" by -3.5 coordinates. I've tried to explain this with the picture attached. Here is my code, I don't see anything wrong with it...
% The function for ButtonPushedFcn
function fixed_pts_guess(app,ax,eve)
x_pt = ax.CurrentPoint(1,1);
y_pt = ax.CurrentPoint(1,2);
app.FixedPtsTextArea.Value=num2str([x_pt y_pt]);
end
% The callback function where the implementation happens
function GuessSolutionButtonValueChanged(app, event)
value = app.GuessSolutionButton.Value;
if value % If button is switched on
app.FixedPointsAxes.ButtonDownFcn=@app.fixed_pts_guess;
else
app.FixedPointsAxes.ButtonDownFcn='';
end
end

Sign in to comment.

More Answers (0)

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!