由于缺乏兴趣和需要答案,从 Matlab Answers 重新发布。
我有一个二维矩阵。我使用带有自定义颜色图和 2D 视图的“surf”在轴上绘制值。这部分有效。我正在尝试修改 ginput 以使其允许以下操作:
- 单击图表上的一个点。
- 移动鼠标。
- 绘制一条线,将单击的第一个点连接到鼠标的当前位置。
问题是,即使我努力在前面画线,它还是隐藏在我的情节后面。
这是第一次单击后在 ginputmodded 中执行的代码:
if isempty(out1)
lineconnect = line('LineWidth',5, ...
'XData',[pt(1,1),pt(1,1)], 'YData',[pt(1,2),pt(1,2)])
v = allchild(gca)
vsize = length(v);
lineposinv = find(v == lineconnect)%index of lineconnect in v
uistack(lineconnect,'up', lineposinv-1)%move lineconnect to front
v = allchild(gca)
linestore(lineconnect);
end
当鼠标移动时执行以下操作 (WindowButtonMotionFcn):
function dummy()
pts = pointstore;
if ~isempty(pts) %block only executes after a point is clicked
lineconnect = linestore();
cp = get(gca,'CurrentPoint');
set(lineconnect,'XData',[pts(1,1),cp(1,1)],...
'YData',[pts(1,2),cp(1,2)]);
v = allchild(gca)
vsize = length(v);
lineposinv = find(v == lineconnect)%index of lineconnect in v
uistack(lineconnect,'up', lineposinv-1)%move to front
v = allchild(gca)
linestore(lineconnect);
end
end
linestore 和 pointstore 是存储持久变量的辅助函数。他们工作正常。
有什么想法可以让我正常工作吗?我在 Windows 7 上使用 MATLAB R2014a。