整数の値で移動するスライダーを作成するには、「スライダーの両端の矢印を選択したとき」と「スライダー自体をドラッグして、スライダーを動かしたとき」の両方で、スライダーの Position プロパティを整数に設定する必要があります。
具体的には、以下のように設定します。
まず、Uicontrol のスライダーの 'SliderStep' プロパティで、スライダーの変化量を設定します。ここで、スライダーを1単位だけ移動させるためには、
スライダーのステップサイズ = 1 /(MaxSliderValue-MinSliderValue)
で計算できますので、この例では1/(16-1) = 1/15 に設定します。
さらに、確実にスライダーを固定ステップで移動させるには、コールバック関数で Position プロパティにてスライダーが示す値を取得後、四捨五入します。この新しい値をスライダーの Position プロパティに設定して、位置を更新します。
以下に例を示します。
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', [1/15 1/15]);
function print_val(hObject,callbackdata)
% スライダーのコールバック関数
newval = hObject.Value; % スライダーの位置を取得
newval = round(newval); % 四捨五入して整数に変更
set(hObject, 'Value', newval); % 新しい値に更新
disp(['Slider moved to ' num2str(newval)]); % コマンドウィンドウに値を表示
end
end