How to get pointer location as grid point of an axes in matlab guide?
조회 수: 16 (최근 30일)
이전 댓글 표시
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
채택된 답변
Jan
2021년 5월 21일
편집: Jan
2021년 5월 21일
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
Jan
2021년 5월 21일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Graphics Object Properties에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!