【问题标题】:uicontextmenu inaccessible when using pcolor and contourf (MATLAB R2014b)使用 pcolor 和 contourf (MATLAB R2014b) 时 uicontextmenu 无法访问
【发布时间】:2018-09-15 02:03:40
【问题描述】:

我对 MATLAB 不是特别有经验,所以这可能是一个愚蠢的问题,但如果能提供任何帮助,我将不胜感激。

我有一些代码可以创建一些轴,将 uicontextmenu 分配给所述轴,然后绘制用户在轴上选择的图表。在除 pcolor 和 contourf 之外的每个绘图案例中,都可以通过右键单击图形(应该如此)来访问 uicontextmenu。为什么会这样?有什么办法可以解决这个问题吗?

通过大量调试,我发现 uicontextmenu 是可以访问的,直到调用 pcolor(或 contourf)函数然后它就消失了。我错过了什么?

编辑:根据要求,示例代码如下。如果您使用 pcolor uicontextmenu 将不会出现,如果您使用 plot 那么它会。我认为这与光标突出显示的数据有关。如果您的光标右键单击绘制的数据,则两者都不会出现任何内容。但这是为什么呢?

axes;

stuff = uicontextmenu('Parent',ancestor(axes,'figure'));
stuffm = uimenu('Parent',stuff,'Label','Change something');
set(axes,'uicontextmenu',stuff);

x = randn(10);
y1=randn(10,1);
y2=randn(10,1);


plot(y1,y2)
%pcolor(x)

【问题讨论】:

标签: matlab user-interface


【解决方案1】:

pcolor 函数创建一个 surface 图形对象,该对象具有自己的 uicontextmenu 属性。你必须在pcolor返回表面句柄后设置它:

h= pcolor(x);
set(h,'uicontextmenu',stuff);

【讨论】:

  • 我有一个新的、稍微不同的问题。为什么这不适用于轮廓? axes; stuff = uicontextmenu('Parent',ancestor(axes,'figure')); stuffm = uimenu('Parent',stuff,'Label','Change something'); x = randn(10); y1=randn(10,1); y2=randn(10,1); %plot(y1,y2) h = contourf(x); set(h,'uicontextmenu',stuff);
  • 我添加了一个新问题,因为它们显然不等同,正如我所假设的那样:stackoverflow.com/questions/52364252/…
猜你喜欢
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多