How to show the position of your mouse in a GUI that has two Axes?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Meshooo
am 8 Feb. 2016
Kommentiert: Adam Danz
am 16 Jun. 2020
Dear all,
I have a GUI that has two axes, Main_Axes and Side_Axes.
Now I want when mouse is over a point in the Main_Axes, it will show the same position of the mouse in the Side_Axes.
So I made a function that I called 'mouseMove', that start * the mouse position
function mouseMove (object, eventdata)
C = get (gca, 'CurrentPoint');
X = C(1,1);
Y = C(1,2);
I = getimage;
hold on
plot(X, Y, 'y*')
hold off
Now in the callback I add this code
set(handles.Main_Axes,'HandleVisibility','ON');
set(handles.Side_Axes,'HandleVisibility','OFF');
imshow(I) % to show 'I' in the Main_Axes
axes(handles.Side_Axes)
set (gca, 'WindowButtonMotionFcn', @mouseMove);
This makes the yellow star always appear in the Main_Axes, but it should appear in the Side_Axes.
Any idea how to fix that?
Meshoo
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 9 Feb. 2016
set (gca, 'WindowButtonMotionFcn', {@mouseMove, handles});
function mouseMove(object, eventdata, handles)
if ~isfield(handles, 'side_pointer') || ~ishandle(handles.side_pointer)
pointersize = 30;
handles.side_pointer = scatter(nan, nan, pointersize, 'y', 'Marker', '*');
guidata(object, handles);
end
C = get(handles.Main_Axes, 'CurrentPoint');
x = C(1,1); y = C(1,2);
%move the cursor
set(handles.side_pointer, 'XData', x, 'YData', y);
%zoom around the cursor
zoomwidth = 64;
xleft = max(0, x-zoomwidth/2);
ybot = max(0, y-zoomwidth/2);
set(handles.Side_Axes, 'XLim', [xleft xleft+zoomwidth], 'YLim', [ybot ybot+zoomwidth]);
drawnow();
2 Kommentare
Adam Danz
am 16 Jun. 2020
If I'm not mistaken, I think that first line should be
set(gcf, . . . )
WindowButtonMotionFcn is a figure property.
Weitere Antworten (2)
John BG
am 8 Feb. 2016
Hi Meshoo
have a look to http://uk.mathworks.com/matlabcentral/fileexchange/33107-mouse-position?s_tid=srchtitle
may be you can modify GetMousePosition.m to achive
'when mouse is over a point in the Main_Axes, it will show the same position of the mouse in the Side_Axes.'
what is the purpose of doing so?
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!