left-side 增量不同于 right-side 增量的 UISlider
UISlider with left-side increment different than right-side increment
我正在使用UISlider来调整图像的白平衡,它是以ºK计算的(尽管以我对光的理解,我认为它是倒退的?不过...)
如果我将默认值设置为 5000ºK,当我向左移动滑块时,图像比向右移动时更蓝。为了缓解这种情况,我煞费苦心地创建了一个不同于 right-hand 增量的 left-hand 增量(左侧恰好延伸右侧的 1/4,因此最小值为 4000ºK,最大值为 9000ºK) .
现在可以了,但是滑块不再位于中间:
有什么方法可以调整滑块的范围,使 left-hand 侧放大为右侧的 4 倍?
您可以使用这个公式:
alpha: value of slider (0-1)
a: K value (e.g. 5000)
min: 4000
max: 9000
/// for getting alpha from K value
alpha = ((a - min)*4)/((a - min)*4 + (max - a));
/// for getting K value from alpha
a = (alpha*max - 4*min*(alpha - 1))/(4 - 3*alpha);
这是我自己做的。所以需要更多的测试。
我正在使用UISlider来调整图像的白平衡,它是以ºK计算的(尽管以我对光的理解,我认为它是倒退的?不过...)
如果我将默认值设置为 5000ºK,当我向左移动滑块时,图像比向右移动时更蓝。为了缓解这种情况,我煞费苦心地创建了一个不同于 right-hand 增量的 left-hand 增量(左侧恰好延伸右侧的 1/4,因此最小值为 4000ºK,最大值为 9000ºK) .
现在可以了,但是滑块不再位于中间:
有什么方法可以调整滑块的范围,使 left-hand 侧放大为右侧的 4 倍?
您可以使用这个公式:
alpha: value of slider (0-1)
a: K value (e.g. 5000)
min: 4000
max: 9000
/// for getting alpha from K value
alpha = ((a - min)*4)/((a - min)*4 + (max - a));
/// for getting K value from alpha
a = (alpha*max - 4*min*(alpha - 1))/(4 - 3*alpha);
这是我自己做的。所以需要更多的测试。