Maui: [Spec] Sombras

Criado em 18 mai. 2020  ·  3Comentários  ·  Fonte: dotnet/maui

Sombras

As sombras criam pistas visuais na interface, o que ajuda o cérebro humano a diferenciar o elemento da IU que o usuário vê. E, esta é a razão pela qual os designers de dispositivos móveis preferem incorporar sombras em seus designs.

shadows

API

A classe DropShadow fornece meios de criar uma sombra configurável que pode ser aplicada a um Layout .

Propriedades

  • Raio : o raio do desfoque gaussiano usado para gerar a sombra.
  • Cor : a cor da sombra.
  • Offset : Offset da sombra em relação ao seu Layout.
  • Opacidade : a opacidade da sombra.
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);
    }
}

Cenários

Vamos ver um exemplo usando C #, XAML e CSS.

Exemplo 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;

Exemplo XAML

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

Exemplo CSS

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

Compatibilidade com versões anteriores

Já temos sombras em alguns dos layouts Xamarin.Forms. A propriedade HasShadow de Frame se tornaria obsoleta (ela ainda poderia ser usada, embora o uso da propriedade Shadow fosse recomendado).

Alcance

Nesta especificação, adicionamos sombras aos diferentes layouts de Xamarin.Forms. Controles específicos, como um rótulo, não se enquadram no escopo (eles podem vir mais tarde).

Dificuldade: Média

enhancement proposal-open

Comentários muito úteis

Incrível! Eu realmente gostaria de ver esse recurso. No entanto, acho que podemos aproveitar a oportunidade para melhorar isso um pouco mais adicionando recursos de sombra gradiente.

image

Como @jsuarezruiz mencionou aqui: https://github.com/dotnet/maui/issues/11

Minha recomendação é aprimorar a propriedade "Color" para usar os novos "Brushes" para gradientes e cores sólidas.

Amostra

<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>

O que você acha?

Todos 3 comentários

Parece ótimo!

Incrível! Eu realmente gostaria de ver esse recurso. No entanto, acho que podemos aproveitar a oportunidade para melhorar isso um pouco mais adicionando recursos de sombra gradiente.

image

Como @jsuarezruiz mencionou aqui: https://github.com/dotnet/maui/issues/11

Minha recomendação é aprimorar a propriedade "Color" para usar os novos "Brushes" para gradientes e cores sólidas.

Amostra

<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>

O que você acha?

Pode ser ótimo adicionar várias sombras para design neuromórfico.
Estas são as coisas da nova moda ...

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

4creators picture 4creators  ·  31Comentários

Amine-Smahi picture Amine-Smahi  ·  3Comentários

PureWeen picture PureWeen  ·  9Comentários

ghost picture ghost  ·  7Comentários

Suplanus picture Suplanus  ·  4Comentários