2011-04-22 31 views

回答

22

基本上可以。

有一個overloadSpriteBatch.DrawString給你一個選項來縮放文本。

但是,這樣做的主要缺點是您的文本會在您縮放時變得像素化。如果你從更高的分辨率開始並縮小尺寸,隨着尺寸變小,你將開始獲得人工製品。

所以,如果你有尺寸的固定號碼,您應該建立在你所需要的不同大小的字體精靈多個版本。

如果你想用鋒利的邊緣不斷擴展性的文字,你也許可以考慮矢量字體。 Nuclex框架有some code to do that

3

您還可以製作您需要的最大尺寸的字體,並從那裏縮小尺寸。

3

假設您正在使用的SpriteFont被命名爲x.spritefont。 執行以下操作爲每個尺寸創建新的SpriteFont

  • 從解決方案資源管理器打開x.spritefont文件。
  • 轉到標記,並將其編輯成自己所需的字體大小。
  • 要進行多尺寸的字體,複製該文件,並相應地改變 標籤。重命名文件與最後追加了 容易記憶的大小。

現在創建SpriteFont的多個實例並相應地加載它們。

SpriteFont sf_s10; 
SpriteFont sf_s14; 

protected override void LoadContent() 
{ 
    sf_s10 = Content.Load<SpriteFont>("x_10"); 
    sf_s14 = Content.Load<SpriteFont>("x_14"); 
    //OTHER LOADS 
} 

動態改變fontSize,請執行以下操作:

SpriteFont current_font; 

protected override void Update(GameTime gameTime) 
{ 
    if(/*SOME_CONDITION_TO_DECREASE_SIZE*/) 
    current_font=sf_s10; 

    if(/*SOME_CONDITION_TO_INCREASE_SIZE*/) 
    current_font=sf_s14; 
}