Programmatisches Äquivalent zur Menüaktion 'Abbildung kopieren'
-
21-12-2019 - |
Frage
Ich entwickle eine Matlab-GUI-Anwendung, die eine Figur mit zusätzlichen UI-Elementen im GUI-Fenster darstellt.Ich möchte dem GUI-Fenstermenü eine Menüaktion hinzufügen, die den Eintrag "Abbildung bearbeiten | Kopieren" des Standard-Abbildungsfenstermenüs genau dupliziert, sodass die Kopierabbildungsoptionen "Informationen beibehalten", "Weißen Hintergrund erzwingen" und "Abbildungsbildschirmgröße anpassen" angewendet werden können.
Weiß jemand, wie das geht?
Danke!
BEARBEITEN, um hinzuzufügen, was funktioniert hat
Anstatt zu versuchen, den Code in den Menü-Handler des Figurenfensters zu kopieren / zu ändern / einzufügen, habe ich ihn einfach über die GUI-Menüfunktion aufgerufen
% --------------------------------------------------------------------
function CopyFigureMenuItem_Callback(hObject, eventdata, handles)
% hObject handle to CopyFigureMenuItem (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
editmenufcn(handles.figure1, 'EditCopyFigure');
Mit ziemlicher Sicherheit nicht zukunftssicher und es wird nicht garantiert, dass es in einer zukünftigen Version funktioniert, aber in R2014a macht es, was ich will!
Lösung
Art
>>edit editmenufcn
an der Matlab-Eingabeaufforderung sehen Sie alle programmgesteuerten Aufrufe des Bearbeitungsmenüs.Anscheinend ist das, wonach Sie suchen, ist:
editmenufcn(hFigure, 'EditCopyFigure');
Natürlich, hFigure
sollte das Handle der Figur sein, die Sie kopieren möchten.
Später bearbeiten
Ein Blick in den Code kann Ihnen Hinweise geben, um verfeinerte Funktionen zu implementieren.Der Körper der Funktion ist riesig switch
Anweisung;auf der Suche nach 'EditCopyFigure'
string gibt Ihnen das Code-Snippet, an dem Sie interessiert sind.Achten Sie jedoch darauf, diese Funktion nicht zu ändern oder Änderungen zu speichern.:-)
Diese Funktion ist jedoch undokumentiert und kann in späteren Versionen geändert / entfernt werden.Ich hoffe, das stört Sie nicht.
Noch später bearbeiten
Anscheinend ist das Obige nicht die Antwort auf die Frage.Die Antwort wäre "Ja, es gibt mindestens einen, der weiß, wie man das macht." :-)