Отбрасываемая тень Win2D выглядит неровной

#c# #xaml #uwp #win2d

#c# #xaml #uwp #win2d

Вопрос:

Я пытаюсь создать отбрасываемую тень в приложении UWP с помощью пакета Win2D. Это строка за строкой из документов (https://learn.microsoft.com/en-us/windows/uwp/composition/using-the-visual-layer-with-xaml ). Почему тень выглядит вот так, а не гладкой:

введите описание изображения здесь

Xaml:

 <Grid >
  <Border x:Name="ShadowHost" />
  <Border Width="562" Height="250" Background="White" />
</Grid>
  

C#:

 private void OnLoaded(object sender, RoutedEventArgs e)
{
    Compositor shadowCompositor;
    Visual hostVisual;

    hostVisual = ElementCompositionPreview.GetElementVisual(this.ShadowHost);
    shadowCompositor = hostVisual.Compositor;

    var dropShadow = shadowCompositor.CreateDropShadow();
    dropShadow.Offset = new Vector3(0, 16, 0);
    dropShadow.BlurRadius = 80.0f;
    dropShadow.Color = Color.FromArgb(128, 0, 0, 0);

    var spriteVisual = shadowCompositor.CreateSpriteVisual();
    spriteVisual.Size = new Vector2(562f, 250f);
    spriteVisual.Shadow = dropShadow;

    ElementCompositionPreview.SetElementChildVisual(this.ShadowHost, spriteVisual);

    var bindSizeAnimation = shadowCompositor.CreateExpressionAnimation("hostVisual.Size");
    bindSizeAnimation.SetReferenceParameter("hostVisual", hostVisual);
    spriteVisual.StartAnimation("Size", bindSizeAnimation);
    }
  

Комментарии:

1. Каждый раз, когда это когда-либо случалось со мной, я списывал это на проблему с драйвером / видеокартой — потому что на одних устройствах это выглядит так, а на других идеально, — но я не смог точно определить, почему.

Ответ №1:

Тот же код создает следующий вывод при использовании последней версии SDK 17763: введите описание изображения здесь Выглядит как плавный вывод. Возможно, вам потребуется либо проверить целевую версию SDK, либо драйвер / видеокарту, как упоминал Джонни.