edit zoom contex menu

2 visualizaciones (últimos 30 días)
André
André el 4 de Nov. de 2019
Comentada: Luc el 15 de Mzo. de 2021
Hello all,
Is there any way to edit the zoom built-in conext menu? I want to add an option to exit zoom mode.
I dont want to create a custom context menu. I want just to edit the original one.
I did it this way:
z = zoom(h.FIG);
z.Enable = 'on';
zoomMenu = findobj(h.FIG, 'Tag', 'ZoomContextMenu');
MENU_exitZoom = uimenu(zoomMenu, 'Text', 'Exit zoom mode', 'Callback', @C_exitZoomMode);
The problem is that the context menu handle is empty if I dont open the menu first with the mouse.
After that, the handle is there, and I can sucessufly add my new option, and it indeed exits zoom mode.
Mathworks states that you cannot add items to the built-in zoom context menu, but you can replace it with your own. But since I did it sucessfully, I suppose this is not entirely true. The only problem is that the menu handle doesn't appear if I dont make the menu show up at least once.
Anyway, I want to create a menu that has all the options of the built-in menu, but with one extra option created by me. Any way for doing this?
Regards,
André
  4 comentarios
André
André el 4 de Nov. de 2019
Well, seems I had to program each option individually. It was really annoying, maybe Mathworks could provide a way to use the built-in context menus as ordinary menus valid for editing:
%%
function C_zoomOut(hObject, eventdata)
zoom(AXES, 0.5)
end
%%
function C_resetView(hObject, eventdata)
zoom(AXES, 'out');
end
%%
function C_unConstrainedZoom(hObject, eventdata)
set(hObject.Parent.Children, 'Checked', 'off');
hObject.Checked = 'on';
z = zoom(AXES);
z.Motion = 'both';
end
%%
function C_horizontalZoom(hObject, eventdata)
set(hObject.Parent.Children, 'Checked', 'off');
hObject.Checked = 'on';
z = zoom(AXES);
z.Motion = 'horizontal';
end
%%
function C_verticalZoom(hObject, eventdata)
set(hObject.Parent.Children, 'Checked', 'off');
hObject.Checked = 'on';
z = zoom(AXES);
z.Motion = 'vertical';
end
%%
function C_exitZoomMode(hObject, eventdata)
zoom(AXES, 'off');
end
Luc
Luc el 15 de Mzo. de 2021
I had a similar problem in the app designer and noticed that adding these lines did the trick for me:
app.UIAxesZoom=zoom(app.UIAxes);
setAllowAxesZoom(app.UIAxesZoom,app.UIAxes,1);

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by