Как сделать Texture2D 50% прозрачным?XNA - PullRequest
18 голосов
/ 09 июля 2011

Я использую SpriteBatch для рисования Texture2D на экране, и мне было интересно, как я могу управлять непрозрачностью изображений? Кто-нибудь знает лучший способ сделать это?

Ответы [ 2 ]

34 голосов
/ 09 июля 2011

Предполагается, что вы используете XNA 4.0 с предварительно умноженным альфа. В вашем spritebatch.draw умножьте цвет на float, 0.5f для 50% прозрачности и нарисуйте, как обычно. Если вы не используете предварительно умноженную альфу, я предлагаю вам сделать это из соображений производительности и сделать ее более интуитивной после привыкания.

Пример:

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

Edit: Также убедитесь, что вы установили состояние смешивания BlendState.AlphaBlend или другое состояние смешивания, которое поддерживает альфа и не является неперемноженным.

Пример:

_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
6 голосов
/ 22 сентября 2012

Просто используйте цвет как new Color(RGBA);, где:

  • R - красный
  • G - зеленый
  • B - синий
  • A - этоАльфа

Например:

new Color(100, 100, 100, 100);
...