1

我正在使用 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。我知道,因为我知道这些信息,所以我可以遍历它们,但是我不必从一开始就创建轴吗?

4

2 回答 2

2

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

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

% 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>');

另请参阅这篇文章这个未记录的 MATLAB 页面

另一种选择是使用 Windows 通用控件 ListView

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

于 2013-04-30T07:43:10.710 回答
0

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

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

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

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

于 2013-04-29T22:28:02.147 回答