我有一个图像单元格数组,我正在尝试使用'NEXT'
按钮在GUI中循环显示,同时在屏幕上显示两个图像。我有9张图像,每张图像都是3张,而我有3张图像,因此我想查看1和2,以及2和3,而不是3和1,这将是列表中的下一个。我在编写此代码时遇到了麻烦,因此非常感谢您的帮助!
function next_block_Callback(hObject, eventdata, handles)
handles.curr_im_fig = handles.curr_im_fig+1;
if mod(handles.curr_im_fig,(handles.maxblock))~=0
p1 = handles.curr_im_fig;
p2 = handles.curr_im_fig+1;
else p1 = handles.curr_im_fig +2;
p2 = handles.curr_im_fig + 3;
end
imshow(handles.images_fig{handles.curr_im_fig},'parent',handles.axes1);
imshow(handles.images_fig{(handles.curr_im_fig)+1},'parent',handles.axes2);
guidata(hObject,handles)
答案 0 :(得分:-1)
我能想到的最直接的方法是将要显示的图像序列保持在矩阵中,并在每次要显示新图像时都访问矩阵。优选地,矩阵被布置为使得每一行是要同时示出的两个图像的索引。您可以将当前显示的图像的行号保留在appdata
或habdles.curSeqNum = 1;
中,并在每次单击下一个按钮时前进此数字。
下面是该想法的演示。您需要在OpeningFcn
中预置function next_block_Callback(hObject, eventdata, handles)
% Image sequence
mySeq = [1 2; 2 3; 4 5; 5 6; 7 8; 8 9];
nxtSeqNum = handles.curSeqNum + 1;
if nxtSeqNum > size(mySeq, 1), nxtSeqNum = 1; end
imshow(handles.images_fig{mySeq(nxtSeqNum, 1)},'parent',handles.axes1);
imshow(handles.images_fig{mySeq(nxtSeqNum, 2)},'parent',handles.axes2);
handles.curSeqNum = nxtSeqNum;
guidata(hObject,handles)
end
。
{{1}}