首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP:在XAML中创建阴影

UWP:在XAML中创建阴影
EN

Stack Overflow用户
提问于 2017-09-05 10:38:58
回答 2查看 6.3K关注 0票数 4

我目前正在尝试创建一个圆形按钮,在UWP中使用两个椭圆元素,并希望其中一个在一定的角度上投下阴影。我在WPF中找到了这样的方法,如下所示:

WPF XAML:

代码语言:javascript
复制
<Ellipse>
  <Ellipse.BitmapEffect>
    <DropShadowBitmapEffect Color="Black" Direction="-50" ShadowDepth="50" Softness=".7"/>
  </Ellipse.BitmapEffect>
</Ellipse>

UWP中的等效值是多少?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-05 10:52:58

最简单的方法是使用UWP社区工具包中的DropShadowPanel

所以先安装

安装-Package Microsoft.Toolkit.Uwp.UI.Controls -Version 2.0.0

然后在XAML中使用以下代码

代码语言:javascript
复制
<controls:DropShadowPanel Color="Black"
                          OffsetX="-50"
                          OffsetY="-50"
                          BlurRadius="50"
                          ShadowOpacity=".7"
                          Width="120"
                          Height="120"
                          HorizontalContentAlignment="Stretch"
                          VerticalContentAlignment="Stretch">
    <Ellipse />
</controls:DropShadowPanel>
票数 11
EN

Stack Overflow用户

发布于 2017-09-05 11:02:21

在UWP中有一个不同的组件来完成这项工作。它被称为复合API,可在NuGet包"Win2D.uwp“中使用。

基本上,您需要获得可视化对象的排序器。

代码语言:javascript
复制
_compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

并使用排序器创建一个下拉阴影。

代码语言:javascript
复制
_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在未来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46052953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档