我正在使用SpriteBatch在屏幕上绘制一个Texture2D,想知道如何控制图片的不透明度?有人知道实现这个最好的方法吗?
我正在使用SpriteBatch在屏幕上绘制一个Texture2D,想知道如何控制图片的不透明度?有人知道实现这个最好的方法吗?
假设您正在使用带预乘alpha的XNA 4.0。在spritebatch.draw中,将颜色乘以浮点数,例如0.5f表示50%的透明度,并像平常一样进行绘制。如果您没有使用预乘alpha,则出于性能原因和更直观的考虑,建议您这样做。
示例:
_spriteBatch.Draw(texture, location, Color.White * 0.5f);
编辑: 还要确保将混合状态设置为BlendState.AlphaBlend,或者另一个支持Alpha且不是NonPremultiplied的混合状态。
示例:
_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
只需使用new Color(RGBA);
即可设置颜色,其中:
例如:
new Color(100, 100, 100, 100);
Color
参数不是枚举类型,哈哈!我不知道你可以像那样创建自己的颜色。 - TheGateKeeper
Color
上使用乘法运算符会调节所有四个通道(RGBA),只有在使用预乘混合模式(例如:AlphaBlend
)时,才会提供所期望的透明度变化。对于其他混合状态(例如:Additive
和NonPremultiplied
)需要按照预期工作,您应该直接设置颜色的 alpha 值(不要改变 RGB 通道)。 - Andrew Russell