Win2D效果只有在内容不足的情况下才会使内容变暗?

时间:2017-05-26 16:04:41

标签: c# xaml uwp windows-10 win2d

我正在处理一些Win2D效果,而且我很难找到一种方法让我的UI内容足够暗,以便上面的文字很容易阅读。

现在这是我的代码的一部分:

ArithmeticCompositeEffect composite = new ArithmeticCompositeEffect
{
    MultiplyAmount = 0,
    Source1Amount = 0.2f,
    Source2Amount = 0.8f,
    // The Source1 parameter will be assigned later on with the EffectFactory
    Source1 = new CompositionEffectSourceParameter(nameof(myBackground)),
    Source2 = new ColorSourceEffect { Color = Colors.Black }
};

所以我将我的内容(Source1)与均匀的黑色混合,这有效地使整个事物变得更暗。我有一个问题:

  • 这会使暗内容太暗,而内容不够暗

我听说可以使用BlendEffect将模式设置为BlendEffectMode.Exclusion来解决此问题,但我不知道如何正确设置它。我尝试使用此效果将我的第一个效果与均匀的黑色颜色结合起来,但结果没有任何变化。

所以我的问题是:

  

我可以申请哪种Win2D效果(不一定是排除混合,如果这不是正确的选择),以确保我的内容总是比给定的阈值(足够黑暗)更暗,而不会使内容与已经黑了几乎是黑色的?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现使用LuminanceToAlphaEffect Win2D效果可以解决这个问题,并将得到的地图覆盖在原始效果上(可能具有一定的强度,以使原始图像或多或少暗,具体取决于情况)。

一个例子是:

LuminanceToAlphaEffect alphaEffect = new LuminanceToAlphaEffect 
{ 
    Source = new CompositionEffectSourceParameter(nameof(myBackground))
};
ArithmeticCompositeEffect composite = new ArithmeticCompositeEffect
{
    MultiplyAmount = 0,
    Source1Amount = 1 - intensity, // Intensity is in the [0..1] range
    Source2Amount = intensity,
    // The Source1 parameter will be assigned later on with the EffectFactory
    Source1 = new CompositionEffectSourceParameter(nameof(myBackground)),
    Source2 = alphaEffect    
};