XAML / UWP将阴影添加到画布上的形状

问题描述 投票:0回答:1

因此,我想在Canvas上渲染各种形状,想想PowerPoint。用户可以在画布上剪裁形状。

我现在想将DropShadow添加到Shape中。

仅,我不知道如何实际执行此操作。社区工具包似乎不允许在Code-Behind中添加下拉阴影(至少没有文档)。在网上找到的其他几种解决方案似乎采用了与UWP不兼容或不建议使用的方式...

有帮助吗?

c# xaml canvas uwp shadow
1个回答
0
投票

DropShadow类提供了一种创建可配置阴影的方法,该阴影可应用于SpriteVisual或LayerVisual(Visuals的子树)。您可以尝试使用它为形状添加阴影。首先创建一个新的DropShadow并将其关联到您的视觉效果。例如:

Compositor compositor = ElementCompositionPreview.GetElementVisual(YourShape).Compositor;
var shadowVisual = compositor.CreateSpriteVisual();
Vector2 newSize = new Vector2(0, 0);
if (YourShape is FrameworkElement element)
{
    newSize = new Vector2((float)element.ActualWidth, (float)element.ActualHeight);
}
shadowVisual.Size = newSize;

var dropShadow = compositor.CreateDropShadow();
dropShadow.BlurRadius = 10;
dropShadow.Opacity = 0.3f;
dropShadow.Offset = new Vector3(10,10,10);
dropShadow.Color = Windows.UI.Colors.Black;

shadowVisual.Shadow = dropShadow;

ElementCompositionPreview.SetElementChildVisual(YourShape, shadowVisual);

有关DropShadow的更多详细信息,您可以参考此document

© www.soinside.com 2019 - 2024. All rights reserved.