【问题标题】:How to make a Texture2D 50% transparent? XNA如何使 Texture2D 50% 透明? XNA
【发布时间】:2011-10-01 17:48:15
【问题描述】:

我正在使用 SpriteBatch 在屏幕上绘制 Texture2D,并且想知道如何操纵图像的不透明度?有谁知道实现这一点的最佳方法?

【问题讨论】:

    标签: xna transparency opacity


    【解决方案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 哈哈!我不知道你可以像这样创建自己的颜色。
    猜你喜欢
    • 2011-04-22
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多