Maui: [规格] 阴影

创建于 2020-05-18  ·  3评论  ·  资料来源: dotnet/maui

阴影

阴影在界面中创建视觉提示,这有助于人脑区分用户看到的 UI 元素。 而且,这就是为什么实际上移动设计师喜欢在他们的设计中加入阴影的原因。

shadows

应用程序接口

DropShadow类提供了创建可应用于Layout 的可配置阴影的方法。

特性

  • Radius :用于生成阴影的高斯模糊的半径。
  • 颜色:阴影的颜色。
  • Offset :阴影相对于其布局的偏移量。
  • 不透明度:阴影的不透明度。
public class DropShadow : BindableObject
{
    public static readonly BindableProperty RadiusProperty = BindableProperty.Create(
        nameof(Radius), typeof(double), typeof(DropShadow), 10.0d);

    public double Radius
    {
        get => (double)GetValue(RadiusProperty);
        set => SetValue(RadiusProperty, value);
    }

    public static readonly BindableProperty ColorProperty = BindableProperty.Create(
        nameof(Color), typeof(Color), typeof(DropShadow), Color.Black);

    public Color Color
    {
        get => (Color)GetValue(ColorProperty);
        set => SetValue(ColorProperty, value);
    }    

    public static readonly BindableProperty OffsetProperty = BindableProperty.Create(
        nameof(Offset), typeof(Point), typeof(DropShadow), new Point(1, 1));

    public Point Offset
    {
        get => (Point)GetValue(OffsetProperty);
        set => SetValue(OffsetProperty, value);
    }

    public static readonly BindableProperty OpacityProperty = BindableProperty.Create(
        nameof(Opacity), typeof(double), typeof(DropShadow), 1.0d);

    public double Opacity
    {
        get => (double)GetValue(OpacityProperty);
        set => SetValue(OpacityProperty, value);
    }
}

场景

让我们看一个使用 C#、XAML 和 CSS 的示例。

C# 示例

var layout = new Grid();

var shadow = new DropShadow ();
shadow.Radius = 12;
shadow.Color = Color.Red;
shadow.Offset = new Point (12, 18);
shadow.Opacity = 0.75d;

layout.Shadow = shadow;

XAML 示例

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Color="Red"
               Offset="12, 18"
               Opacity="0.75" />
     </Grid.Shadow>
</Grid>

CSS 示例

box-shadow: 12px 18px 12px 12px red;

向后兼容

我们已经在一些 Xamarin.Forms 布局中有阴影。 Frame 的 HasShadow 属性将被弃用(它仍然可以使用,但建议使用 Shadow 属性)。

范围

在本规范中,我们将阴影添加到不同的 Xamarin.Forms布局。 特定控件,例如标签,不属于范围(它们可能会在以后出现)。

难度:中等

enhancement proposal-open

最有用的评论

惊人的! 我真的很想看到这个功能。 但是,我认为我们可以借此机会通过添加渐变阴影功能来进一步改进这一点。

image

正如@jsuarezruiz在这里提到的: https :

我的建议是增强“颜色”属性,将新的“画笔”用于渐变和纯色。

样本

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Offset="12, 18"
               Opacity="0.75">
               <DropShadow.Color>
                 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                <GradientStop Color="Yellow" Offset="0.0" />
                <GradientStop Color="Red" Offset="0.25" />
                <GradientStop Color="Blue" Offset="0.75" />
                <GradientStop Color="LimeGreen" Offset="1.0" />
             </LinearGradientBrush>
               </DropShadow.Color>
          </DropShadow>
     </Grid.Shadow>
</Grid>

你怎么认为?

所有3条评论

看起来很棒!

惊人的! 我真的很想看到这个功能。 但是,我认为我们可以借此机会通过添加渐变阴影功能来进一步改进这一点。

image

正如@jsuarezruiz在这里提到的: https :

我的建议是增强“颜色”属性,将新的“画笔”用于渐变和纯色。

样本

<Grid>
     <Grid.Shadow>
          <DropShadow
               Radius="12"
               Offset="12, 18"
               Opacity="0.75">
               <DropShadow.Color>
                 <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                <GradientStop Color="Yellow" Offset="0.0" />
                <GradientStop Color="Red" Offset="0.25" />
                <GradientStop Color="Blue" Offset="0.75" />
                <GradientStop Color="LimeGreen" Offset="1.0" />
             </LinearGradientBrush>
               </DropShadow.Color>
          </DropShadow>
     </Grid.Shadow>
</Grid>

你怎么认为?

为神经形态设计添加多个阴影可能很棒。
这是新时尚的东西...

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jsuarezruiz picture jsuarezruiz  ·  7评论

Joshua-Ashton picture Joshua-Ashton  ·  9评论

aspnetde picture aspnetde  ·  50评论

StephaneDelcroix picture StephaneDelcroix  ·  56评论

adojck picture adojck  ·  15评论