GUIDEのスライダーを固定間隔で動かすにはどうすればよいですか?
8 views (last 30 days)
Show older comments
MathWorks Support Team
on 2 May 2017
Answered: MathWorks Support Team
on 2 May 2017
GUIDE にて、Uicontrol オブジェクトのスライダー(slider) を配置しています。スライダーで、最小値 1、最大値 16 に設定したときに、一回の選択で "1" だけ動かすようにしたいです。
デフォルトの設定では、整数での設定ができません。
Accepted Answer
MathWorks Support Team
on 2 May 2017
整数の値で移動するスライダーを作成するには、「スライダーの両端の矢印を選択したとき」と「スライダー自体をドラッグして、スライダーを動かしたとき」の両方で、スライダーの 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 Comments
More Answers (0)
See Also
Categories
Find more on 対話型コントロールとコールバック in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!