Программный эквивалент действия меню «копировать фигуру»
-
21-12-2019 - |
Вопрос
Я разрабатываю приложение Matlab с графическим интерфейсом, которое отображает фигуру с дополнительными элементами пользовательского интерфейса в окне графического интерфейса.Я хотел бы добавить действие меню в меню окна графического пользовательского интерфейса, которое точно дублирует запись стандартного меню окна рисунка «Редактировать | Копировать рисунок», чтобы параметры копирования рисунка «сохранять информацию», «принудительно использовать белый фон» и «сопоставлять рисунок». размер экрана».
Кто-нибудь знает как это сделать?
Спасибо!
РЕДАКТИРОВАТЬ Чтобы добавить то, что сработало
Вместо того, чтобы пытаться скопировать/изменить/вставить код в обработчик меню окна рисунка, я просто вызвал его из функции меню графического интерфейса.
% --------------------------------------------------------------------
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');
Почти наверняка он не ориентирован на будущее и не гарантированно будет работать в какой-либо будущей версии, но в R2014a он делает то, что я хочу!
Решение
Тип
>>edit editmenufcn
в командной строке Matlab, чтобы увидеть все программные вызовы меню редактирования.Судя по всему, вы ищете:
editmenufcn(hFigure, 'EditCopyFigure');
Конечно, hFigure
должен быть дескриптором фигуры, которую вы хотите скопировать.
Позже отредактировать
Просмотр кода может дать вам подсказки по реализации более совершенных функций.Тело функции представляет собой огромный switch
заявление;находясь в поиске 'EditCopyFigure'
string предоставит вам интересующий вас фрагмент кода.Однако будьте осторожны, не изменяйте эту функцию и не сохраняйте изменения.:-)
Однако эта функция недокументирована и может быть изменена/удалена в более поздних версиях.Надеюсь, вас это не беспокоит.
Еще позже отредактирую
Видимо, вышеизложенное не является ответом на вопрос.Ответ будет «Да, есть по крайней мере один, кто умеет это делать». :-)