如何在数字中添加 "tutorial message div"?
How to add a "tutorial message div" to figures?
安装R2018b后,我打开的第一个图有一个有趣的信息(蓝色显示):
之所以有趣,是因为它包含文本换行、透明度等功能,即使文本调整大小,图像仍保持恒定宽度(这让我想起了 CSS3 flexbox,因此有了标签)等
动画的最后一部分是慢动作,以更好地展示 div 的大小如何跟随图形的大小。
以防万一,我使用的是 Win 10 v1803。
问题:
我想知道我们如何绘制类似的、自定义的、divs(因为缺少一个更好的词)在我们的数字中。 (重要的是要强调这是不是一个UIFigure
!)
到目前为止我发现了什么:
Learn Morelink打开页面:
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
-ing图时,这个div不显示(或者至少,我不能找到它)。
我不知道我到底做了什么让它再次出现,但由于它设置为在您第一次启动 R2018b 时出现,我怀疑删除 prefdir
(显然,在备份之后)并重新启动 MATLAB 可以将其恢复。
- 我唯一没有尝试的是将 java 调试器附加到 MATLAB 并尝试将调用者跟踪到
com.mathworks.mlservices.MLHelpServices.setCurrentLocation
(来自 mlservices.jar
),这会打开帮助浏览器。
在 Java 方面进行了一些挖掘之后(从 findjobj
开始,然后是很多 .getComponent(0).getComponent(0)...
),我终于找到了有问题的组件.这是我学到的东西:
此组件称为 InfoPanel
,是 MATLAB Java API 的一部分。 class 定义本身位于:
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
的 "interesting parts" 似乎是私有的,这意味着它几乎不允许任何自定义(主要是一些颜色;不是字符串或图标),但它复制此 class 并公开我们需要的所有元素应该相当容易。
安装R2018b后,我打开的第一个图有一个有趣的信息(蓝色显示):
之所以有趣,是因为它包含文本换行、透明度等功能,即使文本调整大小,图像仍保持恒定宽度(这让我想起了 CSS3 flexbox,因此有了标签)等
动画的最后一部分是慢动作,以更好地展示 div 的大小如何跟随图形的大小。
以防万一,我使用的是 Win 10 v1803。
问题:
我想知道我们如何绘制类似的、自定义的、divs(因为缺少一个更好的词)在我们的数字中。 (重要的是要强调这是不是一个UIFigure
!)
到目前为止我发现了什么:
Learn Morelink打开页面:
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
-ing图时,这个div不显示(或者至少,我不能找到它)。我不知道我到底做了什么让它再次出现,但由于它设置为在您第一次启动 R2018b 时出现,我怀疑删除
prefdir
(显然,在备份之后)并重新启动 MATLAB 可以将其恢复。- 我唯一没有尝试的是将 java 调试器附加到 MATLAB 并尝试将调用者跟踪到
com.mathworks.mlservices.MLHelpServices.setCurrentLocation
(来自mlservices.jar
),这会打开帮助浏览器。
在 Java 方面进行了一些挖掘之后(从 findjobj
开始,然后是很多 .getComponent(0).getComponent(0)...
),我终于找到了有问题的组件.这是我学到的东西:
此组件称为
InfoPanel
,是 MATLAB Java API 的一部分。 class 定义本身位于: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
的 "interesting parts" 似乎是私有的,这意味着它几乎不允许任何自定义(主要是一些颜色;不是字符串或图标),但它复制此 class 并公开我们需要的所有元素应该相当容易。