How to get pointer location as grid point of an axes in matlab guide?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Vinothkumar Sethurasu
il 19 Mag 2021
Commentato: Vinothkumar Sethurasu
il 24 Mag 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 Commenti
Risposta accettata
Jan
il 21 Mag 2021
Modificato: Jan
il 21 Mag 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 Commenti
Jan
il 21 Mag 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Interactive Control and Callbacks in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!