edit zoom contex menu

2 ビュー (過去 30 日間)
André
André 2019 年 11 月 4 日
コメント済み: Luc 2021 年 3 月 15 日
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 件のコメント
André
André 2019 年 11 月 4 日
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 2021 年 3 月 15 日
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);

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by