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 効果がかなりありますが、回避策はありますか、それともあきらめる必要がありますか?
ご協力いただきありがとうございます!