MATLAB2012aでGUIDEを使用してスライダーウィジェットを作成しました。スライダーが一連の画像をステップスルーする画像を表示する軸を制御したいと思います。
Mファイルの一部で最小、最大、およびスライダーステップのスライダーのプロパティを設定しました。
sliderMin = 1;
sliderMax = size(result); % this is variable
sliderStep = [1, 1]; % major and minor steps of 1
set(handles.slider, 'Min', sliderMin);
set(handles.slider, 'Max', sliderMax);
set(handles.slider, 'SliderStep', sliderStep);
set(handles.slider, 'Value', sliderMin); % set to beginning of sequence
スライダーコールバックで、最小、最大、およびスライダーステップが正しく設定されていることを確認しました。
sliderMin = get(hObject, 'Min') % correct
sliderMax = get(hObject, 'Max') % correct
sliderStep = get(hObject, 'SliderStep') % correct
currentSliderStep = get(hObject, 'Value') % correct, 1 at start
ただし、スライダーの矢印をクリックすると、最初と最後の間だけジャンプします。正しい最小、最大、スライダーステップ、および値(ただし、1またはsliderMaxのみ)がコマンドウィンドウに出力されるたび。シーケンスの内部の画像を表示するために1刻みでステップインすることができません。
実際のスライダーのステップサイズ は次の範囲でスケーリングされます:ActualStep = SliderStep * (Max - Min)
次の行で問題が解決するはずです:sliderStep = [1, 1] / (sliderMax - sliderMin)
。この行の前でゼロで除算しないことを確認する必要があります。 Max
がMin
より大きくない場合、スライダーはレンダリングされないことに注意してください。