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

7 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team
MathWorks Support Team il 2 Mag 2017
GUIDE にて、Uicontrol オブジェクトのスライダー(slider) を配置しています。スライダーで、最小値 1、最大値 16 に設定したときに、一回の選択で "1" だけ動かすようにしたいです。
デフォルトの設定では、整数での設定ができません。
 

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 2 Mag 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
 

Più risposte (0)

Prodotti


Release

R2015a

Community Treasure Hunt

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

Start Hunting!