Matlab 如何添加一个“;教程消息div“;要计算吗?

Matlab 如何添加一个“;教程消息div“;要计算吗?,matlab,flexbox,matlab-figure,matlab-gui,undocumented-behavior,Matlab,Flexbox,Matlab Figure,Matlab Gui,Undocumented Behavior,安装R2018b后,我打开的第一个图包含一条有趣的消息(以蓝色显示): 它之所以有趣,是因为它包含了一些功能,如文本环绕、透明度、即使文本大小调整,图像仍保持恒定宽度(这让我想起了CSS3 flexbox,因此还有标记)等 动画的最后一部分是慢动作,以更好地显示div的大小如何与图形的大小一致 如果有关系的话,我用的是Win10V1803 问题: 我想知道如何在我们的图中绘制类似的自定义div(因为没有更好的词)。(需要强调的是,这不是一个ui图!) 到目前为止,我发现: 该链接将打开页

安装R2018b后,我打开的第一个图包含一条有趣的消息(以蓝色显示):

它之所以有趣,是因为它包含了一些功能,如文本环绕、透明度、即使文本大小调整,图像仍保持恒定宽度(这让我想起了CSS3 flexbox,因此还有标记)等

动画的最后一部分是慢动作,以更好地显示div的大小如何与图形的大小一致

如果有关系的话,我用的是Win10V1803

问题: 我想知道如何在我们的图中绘制类似的自定义div(因为没有更好的词)。(需要强调的是,这不是一个
ui图
!)


到目前为止,我发现:

  • 该链接将打开页面:

    web(fullfile(docroot, 'matlab/creating_plots/interactively-explore-plotted-data.html'))
    
    但是
    web
    docroot
    (甚至
    doc
    )的入口点中的断点都没有被击中

  • 假设该元素是图的子元素,我试图找到它的句柄:

    >> 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的任何痕迹

  • 当-ing这个数字时,这个div没有显示(或者至少,我找不到它)

  • 我不知道我到底做了什么使它再次出现,但由于它设置为在您第一次启动R2018b时出现,我怀疑删除
    prefdir
    (显然,在备份之后)并重新启动MATLAB可能会使它重新出现

  • 我唯一没有尝试的是,将java调试器连接到MATLAB,并尝试将调用者跟踪到
    com.mathworks.mlservices.MLHelpServices.setCurrentLocation
    (来自
    mlservices.jar
    ),从而打开帮助浏览器

在深入挖掘Java方面的内容(从开始,然后是大量的
.getComponent(0).getComponent(0)…
)之后,我终于找到了有问题的组件。以下是我学到的:

  • 该组件称为
    InfoPanel
    ,是MATLAB Java API的一部分。类定义本身位于:

    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设置是
    /MATLAB.settings
    XML中的
    ShowInteractionFobar

  • 看起来,
    InfoPanel
    的“有趣部分”是私有的,这意味着它几乎不允许任何自定义(主要是一些颜色;不是字符串或图标),但制作此类的副本并公开我们需要的所有元素应该相当容易


  • 要深入了解现代图形样式,请参阅工具箱及其示例。这里的另一个web GUI示例(uipanel):。但我的系统有点问题。@marsei:看看你链接的工具箱页面。:)