Вариант 2.
Чтобы гарантировать, что перетаскивание ползунка переместит его в целочисленное положение, мы можем округлить значение, указанное ползунком в функции обратного вызова, а также установить положение ползунка на это округленное значение.
Code:
function myslider
figure;
sld = uicontrol('Style', 'slider',...
'Min',1,'Max',16,'Value',8,...
'Units', 'Normalized',...
'Position', [0.3 0.48 0.4 0.04],...
'Callback', @print_val,...
'SliderStep', [0.9 0.9]);
end
function print_val(hObject,callbackdata)
newval = hObject.Value; %get value from the slider
newval = round(newval); %round off this value
set(hObject, 'Value', newval); %set slider position to rounded off value
disp(['Slider moved to ' num2str(newval)]); %display the value pointed by slider
end
В данном случае независимо от выставленного шага ползунка
'SliderStep' значение ползунка будет округляться до целого значениям.
Округление значения будет выполняться в функции обратного вызова
print_val
Функция
round() отвечает за округление значения ползунка до целого значения.
А далее положение ползунка выставляется в рассчитанное целочисленное значение:
Code:
set(hObject, 'Value', newval);
и отображается на экране matlab
Code:
disp(['Slider moved to ' num2str(newval)]);