2012-02-15 2 views
0
다음과 같이 임 진행률 표시 줄을 설정

: 내가 할 수 있기 때문에 제대로 기입하지 않습니다 있지만 문제 야 작은 표면을 렌더링하기 위해 노력하고있다 지금 여기스케일링 진행 막대 값

void CProgressBar::add(int ammount) 
{ 
    mProgress += ammount; 
} 

float CProgressBar::get() 
{ 
    float pr = (float)mProgress * 100.0f/(float)mMax; 
    return pr; 
} 

을 그리고 당신은 선형의 폭 보간해야 ...

/* 
    Progress bar box has size of 128x16 
    |-----------| 
    |-----------| 
*/ 
float progress = progressBar->get(); 
float scale = 4.0f; //Here i have it hardcoded although i have to make this generic 

progress *= scale; 
graphics->color(prgColor); 
graphics->renderQd(CRect(x,y,progress,height)); 

그래서 메신저 친절 문제에 도움을 요청

+1

이것은 C++ 질문이며 C, C# 또는 다른 질문이 아닙니다. 친절하게 관련 태그를 선택하십시오 – Shai

답변

1

을 'T는 제대로 값을 확장하는 방법을 알아낼 진행률이 0 % 인 직사각형과 진행률이 100 % 인 직사각형의 너비. 예컨대 다음과 같이

float width_0 = 0.f; // or any other number of pixels 
float width_100 = 250.f; // or any other number of pixels 

보간 작동 :

float interpolated_width = (width_100 - width_0) * progress + width_0; 

중요 : progress는 0 ~ 1의 범위에있다! 따라서 CProgressBar::get() 함수를 변경하거나 100으로 나누기를 원할 수 있습니다. 모르고, 기능 따라서 0과 100 사이의 뭔가를 반환) (GET>

graphics->renderQd(CRect(x,y,interpolated_width,height)); 
+0

고마워요. 아무런 차이가 없지만 시도해 봤습니다. ( – user1010005

+0

@ user1010005 : 무엇이 문제입니까? 정확히 작동하지 않는 것은 무엇입니까? – Constantinius

+0

신경 쓰지 마세요. 문자 당 픽셀 단위를 지정하고 눈금을 곱하십시오. – user1010005

0

가 진행 바의 폭은 128이고 progress- :

지금 당신은 새로운 폭 사각형을 렌더링 할 수 귀하의 도서관 세부 사항, 당신의 규모가 1.28이어야한다고 나타납니다

나는 mMax가 완전한 진행의 가치라고 가정합니다.

약간 깔끔하게 나는 get()을 C 스타일의 캐스트로 사용하지 않을 것입니다.

+0

고맙지 만 1.28은 충분하지 않습니다 . – user1010005

+0

예 nMax가 최대 값입니다 – user1010005

+0

문자 당 픽셀 단위를 지정하고 그 값을 곱해서 고쳤습니다. 눈금이있는 경우 – user1010005