-1

我正在使用 UWP 应用程序中的一些 Win2D 效果和合成 API,并且我遇到了一些可用效果的问题。

这是我用来模糊目标元素后面的一些内容的工作方法:

public static SpriteVisual GetAttachedBlur<T>(
    [NotNull] this T element, float blur, int ms) where T : FrameworkElement
{
    // Get the visual and the compositor
    Visual visual = element.GetVisual();
    Compositor compositor = visual.Compositor;

    // Create the blur effect and the effect factory
    GaussianBlurEffect blurEffect = new GaussianBlurEffect
    {
        Name = "Blur",
        BlurAmount = blur,
        BorderMode = EffectBorderMode.Hard,
        Optimization = EffectOptimization.Balanced,
        Source = new CompositionEffectSourceParameter("source")
    };
    CompositionEffectFactory effectFactory = compositor.CreateEffectFactory(blurEffect);

    // Setup the rest of the effect
    CompositionEffectBrush effectBrush = effectFactory.CreateBrush();
    effectBrush.SetSourceParameter("source", compositor.CreateBackdropBrush());

    // Assign the effect to a brush and display it
    SpriteVisual sprite = compositor.CreateSpriteVisual();
    sprite.Brush = effectBrush;
    sprite.Size = new Vector2((float)element.ActualWidth, (float)element.ActualHeight);
    ElementCompositionPreview.SetElementChildVisual(element, sprite);
    return sprite;
}

现在,它工作得非常好,但是如果我尝试GaussianBlurEffect用例如 a 替换该效果,DirectionalBlurEffect则在调用该方法时会出现异常CreateEffectFactory,说不支持输入效果。

现在,我查看了文档,似乎这两种效果都有[NoComposition]归属,所以我的第一个问题是:

如果这两种效果都不受支持([NoComposition]属性),为什么GaussianBlurEffect工作正常而DirectionalBlurEffect不能呢?

我的第二个问题是:

还有另一种使用/应用的方法DirectionalBlurEffect吗?有很多 Win2D 效果被标记为[NoComposition]我想使用的,是否有解决方法或者我必须放弃它们?

谢谢你的帮助!

4

1 回答 1

0

看起来 Win2D 文档没有更新,现在只GaussianBlurEffect支持(见这里

于 2017-05-23T17:26:02.800 回答