Change the mouse pointer while hovering above the axes.

12 visualizaciones (últimos 30 días)
Dhanya
Dhanya el 27 de Feb. de 2017
Comentada: Scott MacKenzie el 16 de Feb. de 2020
Hi, We are having a MATLAB based application that allows user to select a particular point on the axes for an inbuilt feature. Enabling this feature changes the mouse pointer to a crosshair that allows the user to select a point inside the axes. With the current implementation, the pointer changes to crosshair as soon as we enable this feature (by clicking a push button in the toolbar). We want to change the implementation in such a way that the pointer changes to crosshair only when the mouse pointer is inside the axes. we are looking for a behavior similar to the zoom action of mat lab where the mouse pointer turns to a zoom icon when the current position is inside the axes.
I tried to implement this using the WindowButtonMotionFcn listener of the figure and using the overobj('axes'); method. Unfortunately this does not work for us because in our case the axes is placed in an uipanel which is then placed inside the figure. Since the axes is placed in the uipanel, overobj(axes) does not find the axes as mentioned here: http://undocumentedmatlab.com/blog/undocumented-mouse-pointer-functions
I was wondering how the zoom functionality of mat lab works - so that we could apply the same logic here. Could you be able to help us identify how the zoom functionality adjusts the mouse pointer when inside and outside the axes/draw able area?
Thank you, Dhanya
  1 comentario
Scott MacKenzie
Scott MacKenzie el 16 de Feb. de 2020
Using iptPointerManager and iptSetPointerBehaviour partially works for me. There is a cross for the pointer, but the long crosshairs traversing the screen horizontally and vertically are still there as well. I want a cross for a pointer, but do not want the default crosshairs. Is there a way to remove the crosshair lines and just have the specified pointer (e.g., a cross)?

Iniciar sesión para comentar.

Respuesta aceptada

Josh
Josh el 28 de Feb. de 2017
Editada: Walter Roberson el 26 de Nov. de 2019
Have you tried using iptPointerManager? It allows you do define pointer behavior when the mouse enters/traverses/exits a graphics object. Here's a brief description:
% Create and activate a pointer manager for the figure:
iptPointerManager(hFigure, 'enable');
% Have the pointer change to a cross when the mouse enters an axes object:
iptSetPointerBehavior(hAxes, @(hFigure, currentPoint)set(hFigure, 'Pointer', 'cross'));
You can also set custom behavior for when the mouse moves across or exits a graphics object.
  3 comentarios
mcg
mcg el 27 de Ag. de 2018
I can't get this method to work with pcshow() inside of guide. The mouse pointer always turns to the rotation symbol.
Walter Roberson
Walter Roberson el 27 de Ag. de 2018
pcshow() creates its own controls, including setting the pointer.
You would have to set the WindowButtonMotionFcn callback of the figure after calling pcshow() in order to override what pcshow() does. It would not be enough to change the pointer once after calling pcshow(), as the WindowButtonMotionFcn changes the pointer every time it is invoked (unless the pointer happens to be set to 'custom')

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Visual Exploration en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by