2011-04-22 6 views

Respuesta

22

Básicamente sí.

Hay un overload de SpriteBatch.DrawString que le da la opción de escalar su texto.

Sin embargo, la principal desventaja de esto es que su texto se pixelará a medida que lo amplíe. Si comienzas con una resolución más alta y reduces la escala, comenzarás a obtener artefactos a medida que obtienes tamaños más pequeños.

Así que si tiene un número fijo de tamaños, debe crear varias versiones de su fuente sprite en los diferentes tamaños que necesite.

Si desea texto continuamente escalable con bordes afilados, quizás podría buscar fuentes vectoriales. El Marco de Nuclex tiene some code to do that.

3

También puede hacer que su fuente tenga el tamaño más grande que necesita y reducir desde allí.

3

Supongamos que el SpriteFont que está utilizando se llama x.spritefont. Haga lo siguiente para crear el nuevo SpriteFont para cada tamaño.

  • Abra el archivo x.spritefont del explorador de soluciones.
  • Vaya a la etiqueta y edítela al tamaño de letra que desee.
  • Para crear una fuente de tamaño múltiple, duplique el archivo y cambie las etiquetas en consecuencia. Cambie el nombre de los archivos con el tamaño al final por fácil de recordar.

Ahora cree varias instancias de SpriteFont y cárguelas según corresponda.

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 
} 

para cambiar dinámicamente fontSize, haga lo siguiente:

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; 
} 
Cuestiones relacionadas