Я использую SpriteBatch для рисования Texture2D на экране и задавался вопросом, как я могу манипулировать прозрачностью изображений? Кто-нибудь знает лучший способ достижения этого?
Как сделать Texture2D прозрачным на 50%? XNA
Ответ 1
Предполагая, что вы используете XNA 4.0 с предварительно умноженной альфа. В вашем spritebatch.draw умножьте цвет на float, 0.5f на 50% прозрачность и нарисуйте, как обычно. Если вы не используете премультиплексную альфу, я предлагаю вам по соображениям производительности и более интуитивно понятный после того, как вы привыкнете к ней.
Пример:
_spriteBatch.Draw(texture, location, Color.White * 0.5f);
Изменить: Также убедитесь, что вы установили состояние blend в BlendState.AlphaBlend или другое состояние смешивания, которое поддерживает альфу и не является NonPremultiplied.
Пример:
_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
Ответ 2
Просто используйте цвет как new Color(RGBA);
где:
- R - красный
- G - зеленый
- B - синий.
- A - это Alpha
Например:
new Color(100, 100, 100, 100);