首页 > 解决方案 > 使用 pcolor 和 contourf (MATLAB R2014b) 时 uicontextmenu 无法访问

问题描述

我对 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)

标签: matlabuser-interface

解决方案


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

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

推荐阅读