GUIDEのスライダ​ーを固定間隔で動かす​にはどうすればよいで​すか?

8 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 5 月 2 日
回答済み: MathWorks Support Team 2017 年 5 月 2 日
GUIDE にて、Uicontrol オブジェクトのスライダー(slider) を配置しています。スライダーで、最小値 1、最大値 16 に設定したときに、一回の選択で "1" だけ動かすようにしたいです。
デフォルトの設定では、整数での設定ができません。
 

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 5 月 2 日
整数の値で移動するスライダーを作成するには、「スライダーの両端の矢印を選択したとき」と「スライダー自体をドラッグして、スライダーを動かしたとき」の両方で、スライダーの 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
 

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange対話型コントロールとコールバック についてさらに検索

製品


リリース

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!