【问题标题】:Plotedit state of a Matlab figureMatlab 图的绘图编辑状态
【发布时间】:2013-04-04 16:24:01
【问题描述】:

如何在函数内提取 Matlab 图形的plotedit 状态?如果想知道当前图的缩放状态,可以这样写:

zoomState =  get(zoom(gcf), 'Enable');

plotedit 的类似语法不起作用,因为plotedit(gcf) 切换plotedit 状态而不返回任何内容。由于无法获取plotedit 的当前状态,我不知道如何在我的函数完成后暂时将其设置为“关闭”并恢复其值。有什么想法吗?

【问题讨论】:

    标签: matlab figure


    【解决方案1】:

    我刚刚收到了 MathWorks 关于这个问题的答复:

    这是您可能想要使用的未记录功能:

    ison = plotedit(gcf,'isactive')
    

    这将告诉您 PLOTEDIT 是否处于活动状态。然而,由于这 未记录在案,它可能会在未来的版本中更改或不起作用。

    我认为这回答了我的问题。

    【讨论】:

      【解决方案2】:

      如果你在命令行输入open plotedit,你会看到它实际上是一个m文件。当状态切换时,它会调用未记录的函数activateuimode 来完成脏活。胡乱猜测,我在命令行输入help getuimode 并返回消息

        This function is undocumented and will change in a future release
      

      所以函数存在。据推测,使用与plotedit 中的activateuimode 相同的输入参数调用它会做你想做的事。也就是说,

      getuimode(myFigHandle, 'Standard.EditPlot')
      

      在我的系统上,如果不是处于编辑模式,它会返回 [],如果是,则返回 uitools.uimode 的实例。

      但是请注意,这种方法可能有点狡猾 - 正如帮助所说,它可能会在未来的版本中改变。如果你打开getuimode,你会看到它自 2007 年以来一直是一样的,但据我了解,在 R2013 中对 UI 系统进行了大修,所以它可能在最近的版本中发生了变化(我是运行 R2012a)。

      【讨论】:

      • 不幸的是,这对我不起作用。我试过getuimode(myFigHandle, 'Standard.EditPlot'),但这给了我uitools.uimode,不管plotedit状态如何。
      猜你喜欢
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多