Вы должны правильно отформатировать свой код, а не использовать блок-записи, поэтому очень сложно быстро прочитать и понять код.
Чтобы сделать gui с помощью ползунка для изменения нескольких изображений сразу, вам необходимо настроить gui, который вы, похоже, сделали на основе вашего загруженного изображения.
Первое, что нужно сделать, это изменить некоторые свойства ползунка. самый простой способ сделать это дважды щелкнуть ползунок в вашей направляющей фигуры и измените следующие значения:
- изменить значение переменной на 1.
основная идея следующего кода, когда вы перемещаете ползунок, номер создается на основе позиции, а затем этот номер используется для поиска изображений и отображения правильных.
кнопка вызывает функцию uigetfile, позволяющую выбирать несколько файлов так же, как вы делали это в своем вопросе. он создает два имени файла переменной и имя пути. имя файла - это ячейка с именами всех выбранных вами файлов. вы будете использовать число, основанное на положении ползунка, чтобы определить, какие изображения будут отображаться.
следующий код предназначен для кнопки.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
%global variables allow sharing of variables between functions
global filename pathname k1 SliderMax SliderMin
%multi-file selection
[filename, pathname, ~] = uigetfile({ '*.jpg'}, 'Pick files',...
'MultiSelect', 'on');
%determine the maximum value the slider can be. this value is based on the
%number of files selected
%the min value will be set to 1
SliderMax = length(filename)
SliderMin = 1;
set(handles.slider1,'Max',SliderMax);
set(handles.slider1,'Min',SliderMin);
%initialise k1 (slider position) since 4 images will be shown k1 needs to
%be incremented so you show
%4 different images
k1 = 1;
k2 = k1 + 1;
k3 = k1 + 2;
k4 = k1 + 3;
%generating of strings containing the full path to the that will be
%displayed.
img1 = strcat(pathname, filename{k1});
img2 = strcat(pathname, filename{k2});
img3 = strcat(pathname, filename{k3});
img4 = strcat(pathname, filename{k4});
%assign an axes handle to precede imshow and use imshow to display the
%images
% in individual axes.
axes(handles.axes1);
imshow(img1);
axes(handles.axes6);
imshow(img2);
axes(handles.axes7);
imshow(img3);
axes(handles.axes8);
imshow(img4);
следующий код для слайдера
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
global filename pathname SliderMax SliderMin
%put slider postion value into variable k1
k1 = get(handles.slider1,'Value');
%initialise k4 so that it can be used in the if statement for the check.
k4 = k1 + 3;
%the if statement below is a check to make sure the value of k4 is never
%larger than the total number of images, without some sort of check then
%k4 will exceed the matrix dimensions and give an error.
if k4 > SliderMax
k1 = SliderMax - 3;
k2 = SliderMax - 2;
k3 = SliderMax - 1;
k4 = SliderMax;
else
k1 = floor(k1);
k2 = k1 + 1;
k3 = k1 + 2;
k4 = k1 + 3;
end
%generating of strings containing the full path to the that will be
%displayed.
img1 = strcat(pathname, filename{k1});
img2 = strcat(pathname, filename{k2});
img3 = strcat(pathname, filename{k3});
img4 = strcat(pathname, filename{k4});
%assign an axes handle to precede imshow and use imshow to display the
%images in individual axes.
axes(handles.axes1);
imshow(img1);
axes(handles.axes6);
imshow(img2);
axes(handles.axes7);
imshow(img3);
axes(handles.axes8);
imshow(img4);
вау спасибо большое! я читаю ваш ответ – Ez0r
mmmm Я новичок в Matlab, к сожалению, похоже, что я не мог правильно следовать за вами, я просто хочу отображать несколько изображений (до 25 или около того), не будучи маленьким, как когда вы используете subplot и с ползунком, который возможен, и я не хочу отображать только одно изображение, как вы сказали, я могу отображать их по диапазонам 3 или 5 без проблем. – Ez0r
это не проблема ... правильно ли моя интерпретация? вы хотите показать одно большое изображение и изменить его с помощью слайдера? – bilaly