Как добавить "учебное сообщение div" к рисункам?
После установки R2018b первая открытая фигура содержала интересное сообщение (показано синим цветом):
Это интересно потому, что он содержит такие функции, как перенос текста, прозрачность, тот факт, что изображение сохраняет постоянную ширину, даже если размер текста изменяется (это напомнило мне о CSS3 flexbox, отсюда и тэг) и т. Д.
Последняя часть анимации находится в замедленном режиме, чтобы лучше показать, как размер элемента div соответствует размеру фигуры.
В случае, если это имеет значение, я использую Win 10 v1803.
Вопрос:
Я хотел бы знать, как мы можем нарисовать похожие, нестандартные, div-ы (из-за отсутствия лучшего слова) в наших цифрах. (Важно подчеркнуть, что это не UIFigure
!)
Что я нашел до сих пор:
Ссылка " Узнать больше" открывает страницу:
web(fullfile(docroot, 'matlab/creating_plots/interactively-explore-plotted-data.html'))
все же точки останова в точках входа либо
web
или жеdocroot
(или дажеdoc
) не попали.Предполагая, что этот элемент является
Child
фигуры, я попытался найти указатель на нее:>> set(gcf,'MenuBar','none'); findall(gcf) ans = 22×1 graphics array: Figure (1) ContextMenu AnnotationPane Axes AxesToolbar Text Text Text ToolbarStateButton (Brush/Select Data) ToolbarStateButton (Data Tips) ToolbarStateButton (Rotate 3-D) ToolbarStateButton (Pan) ToolbarStateButton (Zoom In) ToolbarStateButton (Zoom Out) ToolbarPushButton (Restore View) Button Button Button Button Button Button Button
однако, делая эти элементы управления невидимыми, используя
set(h(2:end), 'Visible', false)
не заставил div исчезнуть.Сохранение фигуры как
.fig
или создание кода для него, не оставляет следов этого div.когда
uiinspect
На рисунке, этот div не отображается (или, по крайней мере, я не смог его найти).Я не знаю, что именно я сделал, чтобы он снова появился, но так как он должен появиться при первой загрузке R2018b, я подозреваю, что удаление
prefdir
(очевидно, после резервного копирования) и перезапуск MATLAB может вернуть его обратно.- Единственное, что я еще не пробовал, это подключить Java-отладчик к MATLAB и попытаться отследить вызывающего
com.mathworks.mlservices.MLHelpServices.setCurrentLocation
(отmlservices.jar
), который открывает справку браузера.
1 ответ
После некоторых копаний в сторону Java вещей (начиная с findjobj
а затем много .getComponent(0).getComponent(0)...
), Мне наконец удалось найти рассматриваемый компонент. Вот что я узнал:
Этот компонент называется
InfoPanel
и является частью Java API MATLAB. Само определение класса находится в:MATLAB/R2018b/java/jar/hg.jar!/com/mathworks/hg/util/InfoPanel.class
Чтобы он появился, нам нужно позвонить
static
методaddBannerPanel
Проходя в ручке фигуры:com.mathworks.hg.util.InfoPanel.addBannerPanel( figure(randi(1E4)) );
Или другая подпись, которая также принимает пользовательскую панель:
jIP = com.mathworks.hg.util.InfoPanel; jIP.setBackground(java.awt.Color(0.8, 0.7, 0.1)); com.mathworks.hg.util.InfoPanel.addBannerPanel( figure(randi(1E4)), jIP );
Параметр MATLAB, который определяет, должно ли это отображаться,
showinteractioninfobar
внутри<prefdir>/matlab.settings
XML.Похоже, что "интересные части"
InfoPanel
являются частными, что означает, что он допускает практически любую настройку (в основном, некоторые цвета; не строка или значок), но должно быть довольно легко сделать копию этого класса и предоставить все необходимые нам элементы.