【问题标题】:Dynamic grid of images in MATLABMATLAB 中的动态图像网格
【发布时间】:2013-04-29 21:58:35
【问题描述】:

我正在使用 GUIDE 在 matlab 中创建一个 GUI。但是,我不确定如何执行以下操作,并且正在寻找一些提示/建议。

问题

如果选中,我想打开一个目录并在 GUI 界面中显示该目录中的所有图像。但是,由于我永远无法确切知道有多少图像,因此我不完全确定如何在 GUI 中执行此操作。

本质上,我想打开目录和所有要在 GUI 上以网格显示的图像,类似于 iphoto 中的网格。

当前代码

目前,我可以很好地打开一个目录,并获取所有需要的信息,如下所示:

directory = uigetdir(pwd, 'Directory Selector');
files = dir(fullfile(directory, '*.jpg'));  
strcat(strcat(directory, '/') , files.name) %outputs each file's location

我只是不确定如何在不编写大量handles.axes1 的情况下将此信息转换为GUI。我知道,因为我知道这些信息,所以我可以遍历它们,但我不必创建轴吗?

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    您可能不想对单独的控件执行此操作 - 原因是 MATLAB 必须渲染每一个控件,如果目录中有很多图像,这会很慢。显然,您一次只能在屏幕上显示一定数量的图像。您还必须编写自己的滚动代码(或某种分页控件)。

    如果您有 MATLAB > R2008,您可以使用 HTML 将图像放入uitable 单元格中:

    % Example for a control with a 'String' property
    set(handles.myControl, 'String', '<html><b>Logo</b>: <img src="http://UndocumentedMatlab.com/images/logo_68x60.png"/></html>');
    

    另请参阅this postthis Undocumented MATLAB page

    另一个选项是use the Windows common controls ListView

    一个更简单的方法是拥有一个图像和一个文件列表框;一个例子是here

    【讨论】:

    • 非常感谢,您最后一个指向单个图像和图像文件列表框的链接帮助很大。
    【解决方案2】:

    您可以通过编程方式将组件添加到 GUI。还有更多信息here

    每个新轴都可以添加如下内容:

    ah = axes('Parent',hObject,'Position',[left bottom width height]);
    

    其中 left、bottom、width 和 height 定义了轴的大小和位置。您需要更改您创建的每个轴的位置并跟踪轴手柄。

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 2012-08-25
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2013-04-26
      • 1970-01-01
      • 2013-07-10
      相关资源
      最近更新 更多