我目前正在尝试创建一个圆形按钮,在UWP中使用两个椭圆元素,并希望其中一个在一定的角度上投下阴影。我在WPF中找到了这样的方法,如下所示:
WPF XAML:
<Ellipse>
<Ellipse.BitmapEffect>
<DropShadowBitmapEffect Color="Black" Direction="-50" ShadowDepth="50" Softness=".7"/>
</Ellipse.BitmapEffect>
</Ellipse>UWP中的等效值是多少?
发布于 2017-09-05 10:52:58
最简单的方法是使用UWP社区工具包中的DropShadowPanel。
所以先安装
安装-Package Microsoft.Toolkit.Uwp.UI.Controls -Version 2.0.0
然后在XAML中使用以下代码
<controls:DropShadowPanel Color="Black"
OffsetX="-50"
OffsetY="-50"
BlurRadius="50"
ShadowOpacity=".7"
Width="120"
Height="120"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Ellipse />
</controls:DropShadowPanel>发布于 2017-09-05 11:02:21
在UWP中有一个不同的组件来完成这项工作。它被称为复合API,可在NuGet包"Win2D.uwp“中使用。
基本上,您需要获得可视化对象的排序器。
_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;并使用排序器创建一个下拉阴影。
_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
// create a red sprite visual
var myVisual = _compositor.CreateSpriteVisual();
myVisual.Brush = _compositor.CreateColorBrush(Colors.Red);
myVisual.Size = new System.Numerics.Vector2(100, 100);
// create a blue drop shadow
var shadow = _compositor.CreateDropShadow();
shadow.Offset = new System.Numerics.Vector3(30, 30, 0);
shadow.Color = Colors.Blue;
myVisual.Shadow = shadow;
// render on page
ElementCompositionPreview.SetElementChildVisual(this, myVisual);不利的一面是,这并不是很直接。你可以使用不同的画笔来显示图像,固体颜色或其他东西,它将不适用于屏幕上现有的视觉效果(据我理解)。您可以阅读更多关于基础这里的内容。您需要使用表面刷,它可以容纳各种不同的视觉类型,如图像。不过,目前看来还没有为椭圆准备好的组件。
或者,存在一个xaml扩展,它将使用纯xaml、也许值得一试并可能还支持椭圆来为您完成所有这些工作。
作为结束语,所有这些工作目前正在进行中的microsofts部分,并应成为一个本地部分的UWP API在未来。
https://stackoverflow.com/questions/46052953
复制相似问题