0

我正在使用一些 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设置为模式的 aBlendEffectMode.Exclusion来解决这个问题,但我不知道如何正确设置它。我尝试使用此效果将我的第一个效果与统一的黑色结合起来,但结果没有任何变化。

所以我的问题是:

我可以应用哪种 Win2D 效果(如果这不是正确的选择,则不一定是排除混合)以确保我的内容总是比给定的阈值暗(足够暗),而不会使已经暗的内容实际上是黑色的?

谢谢你的帮助!

4

1 回答 1

0

我发现可以使用LuminanceToAlphaEffectWin2D 效果解决这个问题,并将生成的地图覆盖在原始效果上(可能具有一定的强度,以便根据情况使原始图像或多或少变暗)。

一个例子是:

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    
};
于 2017-05-31T16:59:13.603 回答