2011-07-09 22 views

Respuesta

32

Suponiendo que está utilizando XNA 4.0 con alfa premultiplicado. En su spritebatch.draw multiplique el color por un flotador, 0.5f para una transparencia del 50%, y dibuje como lo haría normalmente. Si no está utilizando alfa premultiplicado, le sugiero que lo haga por motivos de rendimiento y es más intuitivo después de que se acostumbre.

Ejemplo:

_spriteBatch.Draw(texture, location, Color.White * 0.5f); 

Editar: También asegúrese de configurar su estado de fusión a BlendState.AlphaBlend, o en otro estado que apoya mezcla alfa y no es NonPremultiplied.

Ejemplo:

_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); 
+7

Usando el operador de multiplicación en 'Color' modula los cuatro canales (RGBA) y sólo proporciona el cambio esperado en la transparencia cuando se utiliza modos de fusión premultiplicados (por ejemplo:' AlphaBlend'). Para que otros estados de mezcla funcionen como se espera (p. Ej .: 'Additive' y' NonPremultiplied'), debe establecer el valor alfa del color directamente (dejando solo RGB). –

6

sólo tiene que utilizar el color como new Color(RGBA); donde:

  • R es Red
  • G es verde
  • B es azul
  • A es Alfa

Por ejemplo:

new Color(100, 100, 100, 100); 
+2

Esto puede no haber sido intencional pero me acabas de mostrar que el parámetro 'Color' no es enum lol! No tenía idea de que pudieras crear tus propios colores así. – TheGateKeeper

Cuestiones relacionadas