GUI布局工具箱 - 带卡面板对象的奇怪显示

时间:2014-09-08 15:28:51

标签: matlab user-interface

上下文

使用GUI Layout toolbox我创建了一个基本上分为两部分的界面:

  • 用户选择他想要查看数据的方式的工具栏区域
  • 在工具栏中以选定模式显示数据的预览区域

对于预览区域,我使用uietxras.CardPanel对象在视图模式之间切换。

问题

经过一些调查,我发现如果我使用surf(或pcolor)在其中一张预览卡中以3D(或2D)显示内容,则会改变第二张卡片中的显示。如果我仅使用plot命令在1D中显示数据,我没有发出!

在其中一张预览卡中使用pcolor / surf时出现的问题:

  • 标题和标签似乎覆盖在Preview 1
  • preview 2
  • 中无法正确显示轴边框
  • 图例边框(显示时)也会更改

如果我在两种预览模式下都只使用plot命令,那么我完全没有问题,并且卡片切换效果很好。

测试用例

我的真实代码很长,因此我将其减少到最低限度,以便您可以重现该问题:

https://gist.github.com/CitizenInsane/54f3c1eba2293d0e5264#file-guilayoutbug-m

只需运行代码并选中复选框"在预览1和#34中执行3D绘图;查看在两种预览模式之间切换时发生的问题:

GuiLayoutToolboxIssue

备注

  • 据我所知,我使用的是最新版本的GUI Layout工具箱(1.17)。
  • 我使用R2013b进行Matlab

2 个答案:

答案 0 :(得分:1)

我也遇到过这个问题。我担心我从来没有弄清楚原因究竟是什么,并且它没有以非常一致的方式出现。问题似乎是未选择的卡片上的图形没有被正确隐藏,并且在选定卡片上的图形边缘后面和周围覆盖。

我建议您通过MATLAB Central工具箱页面上的评论向GUI Layout Toolbox的作者提出问题,因为我认为这是一个错误。

尽管如此,我之前从未跟进的原因是我找到了一个相当简单的解决方法,这也可能对你有用。每次更改所选卡时,我都会运行一个简单的功能,删除所有卡中的所有子卡,然后在所选卡上重新绘制我想要的任何内容。这样做似乎有点烦人,但它有效,并且删除了你遇到的任何显示问题。

答案 1 :(得分:1)

好了,问题与CardPanel本身无关,它与图的渲染器有关。

尝试下面的简单代码:

figure(42);
subplot(1,2,1);
plot(rand(1,12));
subplot(1,2,2);
peaks;
shading flat;

如果将数字渲染器设置为' OpenGL' (默认)==>有一些小故障:

OpenGLRenderer

如果数字渲染器设置为' zbuffer' ==>没有故障:

zbufferRenderer

将渲染器设置为' zbuffer'解决了这个问题。

注意:也许可以通过微调图形卡加速设置来修复OpenGL渲染,但我不知道......我在Matlab和{{1发出了opengl softwareopengl hardware命令渲染比我机器上的software渲染效果差。

编辑:附注

透明度效果仅在渲染器设置为“openGL”时才可用。因此,无法在没有毛刺的情况下同时显示1D和透明3D数据(至少在R2013b中使用hg版本1)

hardware没有问题:

enter image description here