2014-07-19 1 views
1

사용자 정의 슬라이더의 값을 설정하는 방법, 나는 5에 _input 설정 내가 좋아하는 뭔가를 할내가 슬라이더 컨트롤을 만드는 오전

_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))) 

을 가져야한다 중간에 슬라이더를 놓으십시오. 그러나 그렇지 않습니다. 나는 어떤 식 으로든 계산이 잘못되었다고 생각합니다.

_x - (_ 폭/2)의 값으로하면 퍼센트 0,0를 제공

_x + (_ 폭/2)를 값 퍼센트에서 100 (10)를 제공한다. 최대

+0

어떨까요 _value = _x + floor (_input/_max * _width) – Paladin

+0

작동하지 않음 : C _value = _x + floor (7/_max * _width)와 같은 작업을 수행했습니다. 나를 준다 11.95 – user780756

+0

나는 그것이 어떻게 될지 모르겠다. floor()는 정수를 반환해야하고 _x에서는 아마 정수도 가질 것이다. 그래서 그것은 정말로 11.95가되어서는 안됩니다 .. _value = _x + floor (7/_max * _width) = 512 + floor (7/10 * 128) = 512 + 89 = 601 – Paladin

답변

0

매핑 x0 € [_x-_width/2 .. _x+_width/2] ~ sl € [0..10] 선형 및 그 반대의 경우는 그리 중요하지 않습니다.

하면 x0을 갖는 -(_x-_width/2)의 오프셋 (offset) 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 

intfloat 부서의주의 및 반올림 (+.5).