Я создаю функцию «sng_figureslide», которая создает ползунок, который может скользить по всем уже созданным фигурам. Я должен нажать на ползунок, чтобы иметь возможность управлять им с помощью клавиш со стрелками.
Мне интересно, можно ли сделать объект ползунка активным, когда я вызываю функцию, поэтому мне не нужно заранее нажимать на ползунок.
function sng_figureslide
figh=findobj('type','figure');
figs=numel(figh);
% if there are one or zero figures, the slider does not appear
if figs > 1
sliderstep = 1/(figs-1);
else
return
end
fignumber = cell2mat(get(figh,'Number'));
sliderfignumber = max(fignumber) + 1;
figure(max(fignumber) +1)
set(gcf,'position',[360 190 560 36]);
set(gcf,'Toolbar','none');
a=annotation('textbox',[0.03 0.2 0.1 0.7],'String',num2str(figs));
uicontrol('Style', 'slider',...
'Min',1,'Max',figs,'Value',figs,...
'Position', [80 10 470 20],...
'Callback', {@slider1,figh,a,figs,fignumber,sliderfignumber},...
'SliderStep', [sliderstep sliderstep]);
end
function slider1(hObj,~,figh,a,figs,fignumber,sliderfignumber)
Val = round(get(hObj,'Value'));
set(a,'String',num2str(Val));
figure(figh(Val));
figure(sliderfignumber);
end
Кроме того, я думаю, что эта функция очень полезна для многих людей, поэтому не стесняйтесь ее использовать.
WindowKeyPressFcn
для захвата событий клавиш со стрелками и обновления ползунка для вас. - person Suever   schedule 05.08.2016