matlab:改变补丁和线条的层次

时间:2013-07-29 09:27:14

标签: matlab

根据MATLAB documentation

  

如果一条线与贴片或曲面共面,并且正在使用zbuffer或OpenGL渲染器,则这些线条会显示在顶部。

linepatch对象的相对排列无法通过uistack函数进行修改(例如,uistack(patchHandle,'top')uistack(lineHandle,'bottom')不会更改一个对象相对于另一个)。在没有选择其他渲染器的情况下,line是否可以被强制驻留在低于patch的层中?

1 个答案:

答案 0 :(得分:1)

图形对象根据它们在get(gca,'children')中的顺序进行堆叠(第一个元素=顶部,最后一个元素=底部),因此重新排列该数组可以更改线条,面片等的层次。

示例:

patch([0.25 0.25 0.75 0.75],[0.25 0.75 0.75 0.25],'y')
hold on;
plot([-1 1],[-1 1],'b-',[1 -1],[-1 1],'r-','linewidth',10)

目前从下到上:补丁,蓝线,红线

Original order

g=get(gca,'Children')
g=g([3 1 2])
set(gca,'children',g)

现在从下到上:蓝线,红线,补丁

Patch on top

g=get(gca,'Children')
g=g([1 3 2])
set(gca,'children',g)

现在从下到上:红线,蓝线,补丁

Blue over red