如何使 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)。要使其他混合状态按预期工作(例如:AdditiveNonPremultiplied),您应该直接设置颜色的 alpha 值(不考虑 RGB)。【参考方案2】:

只需使用颜色作为new Color(RGBA); where:

R 是红色 G 是绿色的 B 是蓝色 A 是 Alpha

例如:

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

【讨论】:

这可能不是故意的,但您只是向我展示了 Color 参数不是 enum 哈哈!我不知道你可以像这样创建自己的颜色。

以上是关于如何使 Texture2D 50% 透明? XNA的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Xna Texture2D和旋转

iOS:如何使 UIWebView 50% 透明?

有没有从XNA中的Bitmap对象创建Texture2D的快速替代方法?

XNA Texture2D.FromStream以1为单位暂时返回颜色通道

XNA图像显得clippy /模糊?

如何使 RelativeLayout 半透明但不使活动