2012-04-21 18 views

Trả lời

16

Bước đầu tiên là đo chuỗi bằng cách sử dụng SpriteFont.MeasureString(). Sau đó, ví dụ nếu bạn muốn vẽ nó sang bên trái của một điểm nhất định, thay vì sang phải như mặc định, thì bạn cần phải trừ độ rộng X của phép đo khỏi nguồn gốc của bản vẽ văn bản. Nếu bạn muốn nó được làm trung tâm, sau đó bạn có thể sử dụng một nửa số đo lường vv

15

tôi sử dụng mã này:

[Flags] 
public enum Alignment { Center=0, Left=1, Right=2, Top=4, Bottom = 8 } 

public void DrawString(SpriteFont font, string text, Rectangle bounds, Alignment align, Color color) 
    { 
     Vector2 size = font.MeasureString(text); 
     Vector2 pos = bounds.GetCenter(); 
     Vector2 origin = size*0.5f; 

     if (align.HasFlag(Alignment.Left)) 
      origin.X += bounds.Width/2 - size.X/2; 

     if (align.HasFlag(Alignment.Right)) 
      origin.X -= bounds.Width/2 - size.X/2; 

     if (align.HasFlag(Alignment.Top)) 
      origin.Y += bounds.Height/2 - size.Y/2; 

     if (align.HasFlag(Alignment.Bottom)) 
      origin.Y -= bounds.Height/2 - size.Y/2; 

     DrawString(font, text, pos, color, 0, origin, 1, SpriteEffects.None, 0); 
    } 
-3
SpriteFont mFont; 
SpriteBatch mSprite; 

mSprite.Begin(); 
mSprite.DrawString(mFont, "YourText", new Vector2(graphicsDevice.Viewport.Width/2 - mFont.MeasureString("YourText").Length()/2, 0), Color.White, 0, new Vector2(0, 0), 1f, SpriteEffects.None, 0f); 
mSprite.End(); 
Các vấn đề liên quan