2014-02-21 5 views
0

메신저 약간의 피클 속에 게임을 만들고 있는데 경험이 있습니다.C# 진행률 표시 줄 만들기

플레이어가 레벨 업하려면 커튼 xp가 있어야합니다.

플레이어가 20xp이고 40xp가 필요하므로 진행률 표시 줄을 50 % 찼습니다.

진도 막대가 260px이고 그 너비가 50 %이고 진행률 막대의 너비가 130px이고 너비가 100 % 일 때 필요합니다. 260px 넓이?

호프 나는 충분한 정보를주었습니다. 나는 라벨을 커튼 폭 (260 %)으로 확장하여 진행 상황 표시 줄로 만듭니다.

편집 : 10xp 얻을 수있는 PictureBox를 사용

모든 술집을 테스트합니다.

private void pictureBox2_Click(object sender, EventArgs e) 
    { 
     GetXP(); 
    } 

private void GetXP() 
    { 
     int XpBarWidth = 260; 
     int PlayerXP = Convert.ToInt32(Exp.Text); 
     int NeededXP = xp_needed; 

     label1.Text = PlayerXP.ToString(); 
     label4.Text = NeededXP.ToString(); 

     int Ratio = (PlayerXP/NeededXP); 

     XpBar.Width = (int)(XpBarWidth * Ratio); 
     XpBar.Refresh(); 
    } 

Label1 및 Label4 어디서 PlayerXP 및 NeededXP ints를 테스트해야합니까?

+0

이 질문에 대한 답변은 현재 설정에 대한 중요한 가정을하게 될 것입니다. 몇 가지 코드를 게시하여 귀하가 시도한 것을 도울 수 있습니다. –

+0

그게 전부 다 해봤지만 나는 그것을 곱하려고 시도했다 또한 devide 노력하고 추가했지만 아무것도 작동하지 않습니다 – Terrii

+0

문제는 두 개의'int's 나누고있다. 디버거를 사용하여 그 단계로 나아가고 그 결과에 대해 살펴 보시기 바랍니다. 나는 또한 나의 대답을 업데이트했다. – germi

답변

1
double XpBarWidth = 260; // maximum width of your xp bar 
double Player.XP = 20; // current xp of your player 
double NeededXP = 40; // xp needed for next lvl 
double ratio = (Player.XP/NeededXP); 

Label XpLabel = ... // the label where you want to display the xp 
XpLabel.Width = (int)(XpBarWidth * ratio); 

업데이트 : 업데이트 된 질문에, 당신은 int 등 모두 PlayerXPNeededXP을 정의합니다. 그들을 나눌 때 PlayerXPNeededXP보다 작은 한 0이됩니다. 올바른 결과를 얻기 위해 두 번 캐스팅/변경합니다.

+0

너는 너의 생각이 완벽하지만 너비가 더 넓지는 않을거야 – Terrii

+0

좋아하지 않는 것 같아. – Terrii

+0

너의'Label'에'AutoSize'를'false'로 설정 했습니까? – germi

4

Winform 네임 스페이스 내에 구축 된 진행률 표시 줄을 사용하면됩니다.

그래서 인스턴스에서 당신은 진행률 표시 줄의 값을 설정합니다 각 레벨까지

그래서 단계

  • 드래그 새로운 진행 막대가 폭 설정 // 있습니다

New Form

레벨 업 또는 경험 추가를 원하는 경우

 private void LevelUp() 
     { 
      progressBar1.Maximum = 100; //new experience needed 
     } 

     private void ShowExperience(int xp) 
     { 
      progressBar1.Value += xp; // Add the xp 
     } 

은 그래서 당신의 경험을 줄뿐만 아니라 경험의 증가이다 나는 또한 진행률 표시 줄

을 스타일링하는

http://tinyurl.com/pflyvhu

링크 아래에 동작하는 예제에 대한 링크를 포함했다

http://www.dotnetperls.com/progressbar

일부 스타일링 코드

  progressBar1.BackColor = Color.Aqua; 
      progressBar1.ForeColor = Color.White; 

      // you can also use images 

      progressBar1.BackgroundImage = new Bitmap(""); 
+0

나는 그것을 시험해 보았으나 사용자 정의 색상을 사용하여 사용자 정의 색상을 만들고 싶었으므로 label 메소드를 사용했다. – Terrii

+0

왜 색상 설정을 사용하여 진행률 표시 줄의 색상을 설정하지 않습니까? –

+0

어떻게 해야할지 모르겠다. 속성에 FormStyle이 없다. – Terrii