MATLAB 滑动条的步进行为

12

我在MATLAB 2012a中使用GUIDE创建了一个滑块小部件。 我希望它控制一个显示图像的轴,其中滑块可以浏览它们的序列。

我已经在m文件的某个部分设置了滑块的最小值、最大值和步长(SliderStep)属性。

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
在滑块回调函数中,我已经验证了Min、Max和SliderStep是否正确设置。
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 的递增步长查看序列中间的图像。

1个回答

13

实际滑块步长会受到范围的影响: ActualStep = SliderStep * (Max - Min) 下面这行代码应该可以解决你的问题:sliderStep = [1, 1] / (sliderMax - sliderMin)。在执行这行代码之前,请务必检查您是否会被零除。请注意,如果Max不大于Min,则滑块将无法呈现。


无法编辑答案,因此请使用更新的链接:https://www.mathworks.com/help/matlab/ref/uicontrol-properties.html - aguadopd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接