我做了一个 gui,我有一个代码(感谢 Amro),它显示了一个 gif 文件。
我想在 'hAxes' 中显示这个 gif 文件,直到 gui 关闭(与其他 uicontrol 一起显示)。
我有一个包含 200 张图片的文件夹(image1.jpg、image2.jpg...image200.jpg),我对这些图片执行了一些操作(在 loading1 uicontrol 中)。
我尝试类似:
hFigure = figure('units','pixels','position',[300 300 424 470],'menubar','none',...
'name','start processing','numbertitle','off','resize','off');
hAxes = axes('Parent',hFigure,'Units','pixels','Position',[0 112 424 359]);
%% 这是 Amro 用来显示 gif 文件的内容
fname = 'loading.gif';
%# read all GIF frames**
info = imfinfo(fname, 'gif');
delay = ( info(1).DelayTime ) / 100;
[img,map] = imread(fname, 'gif', 'frames','all');
[imgH,imgW,~,numFrames] = size(img);
hImg = imshow(img(:,:,:,1), map, 'Parent',hAxes);
pause(delay)
%# loop over frames continuously
counter = 1;
while ishandle(hImg)
%# increment counter circularly
counter = rem(counter, numFrames) + 1;
%# update frame
set(hImg, 'CData',img(:,:,:,counter))
%# update colormap
n = max(max( img(:,:,:,counter) ));
colormap( info(counter).ColorTable(1:n,:) )
%# pause for the specified delay
pause(delay)
end
%% 这是我的其余代码:
set(hAxes,'Visible','off', 'handlevisibility', 'off');
%% loading1 shows a data
loading1 = uicontrol('style','text','unit','pix','position',[0 72 424 40],...
'backgroundcolor','r','fontsize',20);
for i=1:200
image = horzcat('now processing ', 'image', num2str(i), '.jpg of 200 images')
set(loading1,'string',image);
drawnow;
end
但是这段代码不起作用:在这段代码中,gui 显示了 hAxes(gif 文件很好),但是 gui 没有显示 loading1 uicontrol。我希望他同时显示(hAxes 和 loading1)
所以我的意思是我希望 gui 向我显示 gif 文件和 'loading1' uicontrol 两者。我认为“loading1”不起作用,因为显示 gif 文件的代码中的“while”。
这就是我得到的:
这就是我想要得到的:
进而:
进而:
ETC...