影子

.NET 多平台应用 UI (.NET MAUI) Shadow 类围绕布局或视图绘制阴影。 VisualElement 类具有 Shadow 可绑定属性(类型为 Shadow),该属性允许将阴影添加到任何布局或视图。

Shadow 类定义以下属性:

  • Radius,类型为 float,定义用于生成阴影的模糊半径。 此属性的默认值为 10。
  • Opacity,其类型为 float,指示阴影的不透明度。 此属性的默认值为 1。
  • Brush,类型为 Brush,表示用于着色阴影的画笔。
  • Point类型的 Offset指定阴影的偏移量,该偏移量表示创建阴影的光源的位置。

这些属性由 BindableProperty 对象提供支持,这意味着这些属性可以是数据绑定的目标,并设置样式。

重要

Brush 属性目前仅支持 SolidColorBrush

创建阴影

若要向控件添加阴影,请使用属性元素语法将控件的 Shadow 属性设置为其属性定义其外观的 Shadow 对象。

若要向控件添加阴影,请将控件的 Shadow 属性设置为定义阴影的格式化字符串。 有三种支持的字符串格式:

  • color, offset X, offset Y

    <Image Source="dotnet_bot.png"
           WidthRequest="250"
           HeightRequest="310"
           Shadow="#000000 4 4" />
    
  • offset X, offset Y, radius, color

    <Image Source="dotnet_bot.png"
           WidthRequest="250"
           HeightRequest="310"
           Shadow="5 8 8 rgb(6, 201, 198)" />    
    
  • offset X, offset Y, radius, color, opacity

    <Image Source="dotnet_bot.png"
           WidthRequest="250"
           HeightRequest="310"
           Shadow="4 4 16 AliceBlue 0.5" />
    

可以使用以下格式指定颜色:

格式 评论
十六进制 #rgb#argb#rrggbb#aarrggbb
RGB rgb(255,0,0)rgb(100%,0%,0%) 有效值为 0-255 或 0%-100%。
RGBA rgba(255, 0, 0, 0.8)rgba(100%, 0%, 0%, 0.8) 有效的不透明度值为 0.0-1.0。
HSL hsl(120, 100%, 50%) h 的有效值为 0-360,sl 的值为 0%-100%。
HSLA hsla(120, 100%, 50%, .8) 有效的不透明度值为 0.0-1.0。
HSV hsv(120, 100%, 50%) h 的有效值为 0-360,sv 的值为 0%-100%。
HSVA hsva(120, 100%, 50%, .8) 有效的不透明度值为 0.0-1.0。
预定义颜色 fuchsiaAquaMarinelimegreen 颜色字符串不区分大小写。

或者,可以使用属性元素语法(其属性定义其外观)将控件的 Shadow 属性设置为 Shadow 对象。

以下 XAML 示例演示如何使用属性元素语法向 Image 添加阴影:

<Image Source="dotnet_bot.png"
       WidthRequest="250"
       HeightRequest="310">
    <Image.Shadow>
        <Shadow Brush="Black"
                Offset="20,20"
                Radius="40"
                Opacity="0.8" />
    </Image.Shadow>
</Image>

在此示例中,在图像的轮廓周围绘制黑色阴影,其偏移量指定它显示在图像的右侧和底部:

应用阴影的图像的屏幕截图。

如以下示例所示,还可以为剪裁后的对象添加阴影。

<Image Source="https://aka.ms/campus.jpg"
       Aspect="AspectFill"
       HeightRequest="220"
       WidthRequest="220"
       HorizontalOptions="Center">
    <Image.Clip>
        <EllipseGeometry Center="220,250"
                         RadiusX="220"
                         RadiusY="220" />
    </Image.Clip>
    <Image.Shadow>
        <Shadow Brush="Black"
                Offset="10,10"
                Opacity="0.8" />
    </Image.Shadow>
</Image>

在此示例中,在剪裁图像的 EllipseGeometry 轮廓周围绘制黑色阴影:

应用阴影效果的裁剪图像的屏幕截图。

有关剪辑元素的详细信息,请参阅 使用几何体剪辑