如何使 Texture2D 50% 透明? XNA
Posted
技术标签:
【中文标题】如何使 Texture2D 50% 透明? XNA【英文标题】:How to make a Texture2D 50% transparent? XNA 【发布时间】:2011-10-01 17:48:15 【问题描述】:我正在使用 SpriteBatch 在屏幕上绘制 Texture2D,并且想知道如何操纵图像的不透明度?有谁知道实现这一点的最佳方法?
【问题讨论】:
【参考方案1】:假设您使用的是带有预乘 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);
【讨论】:
在Color
上使用乘法运算符调制所有四个通道 (RGBA),并且仅在使用预乘混合模式时提供预期的透明度变化(例如:AlphaBlend
)。要使其他混合状态按预期工作(例如:Additive
和 NonPremultiplied
),您应该直接设置颜色的 alpha 值(不考虑 RGB)。【参考方案2】:
只需使用颜色作为new Color(RGBA);
where:
例如:
new Color(100, 100, 100, 100);
【讨论】:
这可能不是故意的,但您只是向我展示了Color
参数不是 enum 哈哈!我不知道你可以像这样创建自己的颜色。以上是关于如何使 Texture2D 50% 透明? XNA的主要内容,如果未能解决你的问题,请参考以下文章
有没有从XNA中的Bitmap对象创建Texture2D的快速替代方法?