2012-05-13 2 views
0

두 개의 볼륨 아이콘을 창에 그려야하는이 코드가 있지만 작동하지 않습니다. 여기에 관련 코드는 다음과 같습니다XNA는 내가 말한 것을 그려 내지 않습니다

Texture2D vol_max; 
    Vector2 vol_max_vect; 
    Texture2D vol_min; 
    Vector2 vol_min_vect; 
    ... 
    protected override void LoadContent() 
    { 
     // Create a new SpriteBatch, which can be used to draw textures. 
     spriteBatch = new SpriteBatch(GraphicsDevice); 

     vol_max = Content.Load<Texture2D>("[email protected]"); 
     vol_min = Content.Load<Texture2D>("[email protected]"); 
    } 
    protected override void Update(GameTime gameTime) 
    { 
     thisKeyboard = Keyboard.GetState(PlayerIndex.One); 

     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || 
      thisKeyboard.IsKeyDown(Keys.Escape)) 
     { 
      this.Exit(); 
     } 

     // Update window vectors 
     vol_max_vect = new Vector2(
      (float)(Window.ClientBounds.Right - 20), 
      (float)(Window.ClientBounds.Bottom - 20)); 
     vol_min_vect = new Vector2(
      (float)(Window.ClientBounds.Right - 140), 
      (float)(Window.ClientBounds.Bottom - 20)); 

     prevKeyboard = thisKeyboard; 

     base.Update(gameTime); 
    } 

    protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(Color.CornflowerBlue); 

     spriteBatch.Begin(); 
     spriteBatch.Draw(
      vol_max, 
      vol_max_vect, 
      Color.White); 
     spriteBatch.Draw(
      vol_min, 
      vol_min_vect, 
      Color.White); 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 

답변

2

문제 ClientBounds.Right/아래는 윈도우 화면 좌표 (여기서 [0,0] 화면의 왼쪽 상단이고, 오른쪽 아래는 귀하의 해상도에 있다는 것이다 예 : [1024, 768]).

정말로 원하는 것은 창 오른쪽 하단에 그려주는 것입니다. XNA의 SpriteBatch는 뷰포트 좌표로 그립니다. 여기서 [0, 0]은 뷰포트의 왼쪽 상단이고 오른쪽 하단은 응용 프로그램의 해상도입니다 (예 : [800, 480]. 너비를 얻으려면 Window.ClientBounds.Right 대신 Window.ClientBounds.Width를 사용하고 Window.ClientBounds.Bottom 대신 Window.ClientBounds.Height를 사용하면됩니다.

잘하면 도움이됩니다.

+0

예! 감사! –

관련 문제