Maui: [Spesifikasi] Bayangan

Dibuat pada 18 Mei 2020  ·  3Komentar  ·  Sumber: dotnet/maui

Bayangan

Bayangan membuat isyarat visual di antarmuka, yang membantu otak manusia membedakan elemen UI yang dilihat pengguna. Dan, inilah alasan mengapa sebenarnya desainer ponsel lebih suka memasukkan bayangan dalam desain mereka.

shadows

API

Kelas DropShadow menyediakan sarana untuk membuat bayangan yang dapat dikonfigurasi yang dapat diterapkan ke Layout .

Properti

  • Radius : Jari-jari Gaussian blur yang digunakan untuk menghasilkan bayangan.
  • Warna : Warna bayangan.
  • Offset : Offset bayangan relatif terhadap Layout-nya.
  • Opacity :
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);
    }
}

Skenario

Mari kita lihat contoh menggunakan C#, XAML dan CSS.

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

Contoh XAML

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

Contoh CSS

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

Kompatibilitas terbalik

Kami sudah memiliki bayangan di beberapa Tata Letak Xamarin.Forms. Properti HasShadow Frame akan menjadi usang (masih bisa digunakan, meskipun penggunaan properti Shadow akan direkomendasikan).

Cakupan

Dalam Spec ini, kami menambahkan bayangan ke Xamarin.Forms Layouts yang berbeda. Kontrol khusus, seperti Label, tidak termasuk dalam cakupan (bisa datang nanti).

Kesulitan: Sedang

enhancement proposal-open

Komentar yang paling membantu

Luar biasa! Saya sangat ingin melihat fitur ini. Namun, saya pikir kita dapat mengambil kesempatan untuk meningkatkan ini sedikit lebih banyak dengan menambahkan kemampuan bayangan gradien.

image

Seperti yang disebutkan @jsuarezruiz di sini: https://github.com/dotnet/maui/issues/11

Rekomendasi saya adalah untuk meningkatkan properti "Warna" untuk menggunakan "Kuas" baru untuk gradien dan warna solid.

Sampel

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

Bagaimana menurutmu?

Semua 3 komentar

Tampak hebat!

Luar biasa! Saya sangat ingin melihat fitur ini. Namun, saya pikir kita dapat mengambil kesempatan untuk meningkatkan ini sedikit lebih banyak dengan menambahkan kemampuan bayangan gradien.

image

Seperti yang disebutkan @jsuarezruiz di sini: https://github.com/dotnet/maui/issues/11

Rekomendasi saya adalah untuk meningkatkan properti "Warna" untuk menggunakan "Kuas" baru untuk gradien dan warna solid.

Sampel

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

Bagaimana menurutmu?

Bisa jadi bagus untuk menambahkan beberapa Shadow untuk desain neuromorfik.
Ini adalah hal-hal mode baru ...

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Yaroslav08 picture Yaroslav08  ·  6Komentar

probonopd picture probonopd  ·  50Komentar

PureWeen picture PureWeen  ·  21Komentar

4creators picture 4creators  ·  31Komentar

Joshua-Ashton picture Joshua-Ashton  ·  9Komentar