How to get pointer location as grid point of an axes in matlab guide?
15 views (last 30 days)
Show older comments
Vinothkumar Sethurasu
on 19 May 2021
Commented: Vinothkumar Sethurasu
on 24 May 2021
In MATLAB GUIDE, i have a application to place a imgae object on the exact grid point loaction of an axes.
I have a solution to place the object on random loaction on the axes through getting the pointer location from the command " get(0,'PointerLocation')".
For the current application, the pointer location need to be exact grid point of the axes.
Suggest me a solution.
5 Comments
Accepted Answer
Jan
on 21 May 2021
Edited: Jan
on 21 May 2021
It is hard to convert the global mouse position on the screen to a position in the axes. Therefore get(0,'PointerLocation') is not useful. The axes contain a 'CurrentPoint' property already, which can be used directly.
I do not understand, why or where you create new axes objects.
what about this example:
function [] = kkkj
AxesH = axes('XLim', [0 1], 'YLim', [0 0.5], ...
'Xtick', 0:0.01:1, 'Ytick', 0:0.0355:0.5, ...
'XGrid', 'on', 'YGrid', 'on', ...
'NextPlot', 'add', ... % as: hold on
'ButtonDownFcn', @myAxesClick);
end
function myAxesClick(AxesH, EventData)
P = get(AxesH, 'CurrentPoint'); % Mouse click position in Axes
XTick = get(AxesH, 'XTick'); % X and Y grid
YTick = get(AxesH, 'YTick');
[~, xm] = min(abs(P(1, 1) - XTick)); % Find nearest X and Y grid point
X = XTick(xm);
[~, ym] = min(abs(P(1, 2) - YTick));
Y = YTick(ym);
plot(X, Y, 'pb', 'MarkerSize', 20); % Plot a star
end
3 Comments
Jan
on 21 May 2021
interp1 is not implemented efficiently. This is not a problem, if the code involves a GUI interaction with a user, because waiting for the mouse click is still the bottleneck.
More Answers (0)
See Also
Categories
Find more on Graphics Object Properties 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!