Las sombras crean señales visuales en la interfaz, lo que ayuda al cerebro humano a diferenciar el elemento de la interfaz de usuario que ve el usuario. Y esta es la razón por la que los diseñadores móviles prefieren incorporar sombras en sus diseños.
La clase DropShadow proporciona medios para crear una sombra configurable que se puede aplicar a un diseño .
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);
}
}
Veamos un ejemplo usando C #, XAML y CSS.
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;
<Grid>
<Grid.Shadow>
<DropShadow
Radius="12"
Color="Red"
Offset="12, 18"
Opacity="0.75" />
</Grid.Shadow>
</Grid>
box-shadow: 12px 18px 12px 12px red;
Ya tenemos sombras en algunos de los diseños de Xamarin.Forms. La propiedad HasShadow de Frame quedaría obsoleta (aún podría usarse, aunque se recomendaría el uso de la propiedad Shadow).
En esta especificación, agregamos sombras a los diferentes diseños de Xamarin.Forms. Los controles específicos, como una etiqueta, no entran dentro del alcance (podrían venir más adelante).
¡Se ve muy bien!
¡Impresionante! Realmente me gustaría ver esta función. Sin embargo, creo que podemos aprovechar la oportunidad para mejorar esto un poco más agregando capacidades de sombra de degradado.
Como lo mencionó https://github.com/dotnet/maui/issues/11
Mi recomendación es mejorar la propiedad "Color" para utilizar los nuevos "Pinceles" para degradados y colores sólidos.
<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>
¿Qué piensas?
Podría ser genial agregar múltiples sombras para el diseño neuromórfico.
Estas son las nuevas cosas de moda ...
Comentario más útil
¡Impresionante! Realmente me gustaría ver esta función. Sin embargo, creo que podemos aprovechar la oportunidad para mejorar esto un poco más agregando capacidades de sombra de degradado.
Como lo mencionó https://github.com/dotnet/maui/issues/11
Mi recomendación es mejorar la propiedad "Color" para utilizar los nuevos "Pinceles" para degradados y colores sólidos.
Muestra
¿Qué piensas?