我正在创建一个滑块控件,我在设置值时遇到问题
_x = 512;
_y = 256;
_width = 128;
_height = 12;
_min = 0;
_max = 10;
我做的事情,
// set the value
_input = 5;
_value = median(_x-(_width/2)+(_input/_max),_x-((_width/2)),_x+((_width/2)))
将_input设置为5应该将滑块放在中间,但它不会,我认为我的计算错误了。
_x - (_ width / 2)将给出0%的百分比,0的值
_x +(_ width / 2)将给出100%的百分比,10的值。最大
答案 0 :(得分:0)
将x0 € [_x-_width/2 .. _x+_width/2]
线性映射到sl € [0..10]
,反之亦然,这不是什么大问题。
如果x0
:-(_x-_width/2)
的偏移将其转换为0.._width
,则10/_width
需要0..10
的比例:
sl == ( x0 - (_x-_width/2) ) * 10 / _width // float div unless 10 | _width
反转:
x0 == (_x-_width/2) + sl * _width / 10
照顾int
与float
分歧并进行四舍五入(+.5
)。