Ekranda bir Texture2D çizmek için SpriteBatch kullanıyorum ve görüntülerin opaklığını nasıl değiştirebileceğimi merak ediyordum? Bunu gerçekleştirmenin en iyi yolu bilen var mı?Texture2D nasıl% 50 şeffaf hale getirilir? XNA
cevap
XNA 4.0'ı premultiplied alpha ile kullandığınızı varsayarsak. Spritebatch.draw'inizde, rengi% 50'lik bir saydamlık için bir float, 0.5f ile çarpın ve normalde yaptığınız gibi çizin. Premultiplied alpha kullanmıyorsanız, performans gerekçelerinden ve alıştıkça daha sezgisel olmanızı öneririm.
Örnek:
_spriteBatch.Draw(texture, location, Color.White * 0.5f);
Düzenleme: Ayrıca BlendState.AlphaBlend veya alfa destekler ve NonPremultiplied olmayan başka harman durumuna harman durumunu ayarlamak emin olun.
Örnek:
_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
sadece new Color(RGBA);
olarak renk kullanmak:
- R
- G Kırmızı Yeşil
- B
- bir
:
new Color(100, 100, 100, 100);
Bu kasıtlı olmayabilir, ancak bana sadece 'Renk' parametresinin enum lol olmadığını gösterdin! Kendi renklerini böyle oluşturabileceğinin hiçbir fikrim yoktu. – TheGateKeeper
'Color' bütün kanalları (RGBA) modüle ve çarpılmış harmanlama modlarını kullanırken sadece şeffaflık beklenen değişiklik sağlar üzerindeki çarpma operatörü kullanarak (örn:' AlphaBlend'). Diğer karışım durumlarının beklendiği gibi çalışabilmesi için (örn: 'Additive' ve' NonPremultiplied'), doğrudan rengin alfa değerini ayarlamalısınız (yalnızca RGB'yi bırakarak). –