我正在使用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。我明白,因为我知道这个信息我可以循环它们,但我不需要创建轴开始吗?
答案 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 post和this 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定义轴的大小和位置。您需要更改所创建的每个轴的位置并跟踪轴手柄。