MATLAB中的动态网格图形

时间:2013-04-29 21:58:36

标签: matlab matlab-guide

我正在使用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

我只是不确定如何在不编写大量handle.axes1的情况下将此信息转换为GUI。我明白,因为我知道这个信息我可以循环它们,但我不需要创建轴开始吗?

2 个答案:

答案 0 :(得分:2)

您可能不希望使用单独的控件执行此操作 - 原因是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

答案 1 :(得分:0)

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

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

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

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