-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は機能しないのですか?

そして、私が持っている2番目の質問:

それを使用/適用する別の方法はありますDirectionalBlurEffectか? [NoComposition]使用したいとマークされている Win2D 効果がかなりありますが、回避策はありますか、それともあきらめる必要がありますか?

ご協力いただきありがとうございます!

4

1 に答える 1