私はGUIを作成し、GIFファイルを表示するコード(Amroに感謝)を持っています。
GUIが閉じられるまで、このgifファイルを「hAxes」に表示したい(他のuicontrolで表示する)。
200 個の写真 (image1.jpg、image2.jpg... image200.jpg) を含むフォルダーがあり、これらの画像についていくつかのことを実行します (load1 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 の両方を表示してもらいたいということです。gifファイルを表示するコードの「while」が原因で、「loading1」が機能していないと思います。
これは私が得たものです:
これは私が取得したいものです:
その後:
その後:
等...