How to show the position of your mouse in a GUI that has two Axes?
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Meshooo
      
 el 8 de Feb. de 2016
  
    
    
    
    
    Comentada: Adam Danz
    
      
 el 16 de Jun. de 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 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 9 de Feb. de 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 comentarios
  Adam Danz
    
      
 el 16 de Jun. de 2020
				If I'm not mistaken, I think that first line should be 
set(gcf, . . . )
WindowButtonMotionFcn is a figure property.  
Más respuestas (2)
  John BG
      
 el 8 de Feb. de 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?
Ver también
Categorías
				Más información sobre Data Exploration en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



