Bagikan melalui


Warna dalam Xamarin.Forms

Struktur ini Color memungkinkan Anda menentukan warna sebagai nilai Red-Green-Blue (RGB), nilai Hue-Saturation-Luminosity (HSL), nilai Hue-Saturation-Value (HSV), atau dengan nama warna. Saluran Alpha juga tersedia untuk menunjukkan transparansi.

Color objek dapat dibuat dengan Color konstruktor, yang dapat digunakan untuk menentukan warna abu-abu, nilai RGB, atau nilai RGB dengan transparansi. Dalam semua kasus, argumen adalah double nilai mulai dari 0 hingga 1.

Anda juga dapat menggunakan metode statis untuk membuat Color objek:

  • Color.FromRgb untuk double nilai RGB dari 0 hingga 1.
  • Color.FromRgb untuk nilai RGB bilangan bulat dari 0 hingga 255.
  • Color.FromRgba untuk double nilai RGB dengan transparansi.
  • Color.FromRgba untuk nilai RGB bilangan bulat dengan transparansi.
  • Color.FromHsla untuk double nilai HSL dengan transparansi.
  • Color.FromHsv untuk double nilai HSV dari 0 hingga 1.
  • Color.FromHsv untuk nilai HSV bilangan bulat dari 0 hingga 255.
  • Color.FromHsva untuk double nilai HSV dengan transparansi.
  • Color.FromHsva untuk nilai HSV bilangan bulat dengan transparansi.
  • Color.FromUint untuk nilai yang uint dihitung sebagai (B + 256 * (G + 256 * (R + 256 * A)))).
  • Color.FromHexstring untuk format digit heksadesimal dalam bentuk "#AARRGGBB" atau "#RRGGBB" atau "#ARGB" atau "#RGB", di mana setiap huruf sesuai dengan digit heksadesimal untuk saluran alfa, merah, hijau, dan biru.

Setelah dibuat, Color objek tidak dapat diubah. Karakteristik warna dapat diperoleh dari properti berikut:

  • R, yang mewakili saluran merah warna.
  • G, yang mewakili saluran hijau warna.
  • B, yang mewakili saluran biru warna.
  • A, yang mewakili saluran alfa warna.
  • Hue, yang mewakili saluran warna warna.
  • Saturation, yang mewakili saluran saturasi warna.
  • Luminosity, yang mewakili saluran luminositas warna.

Properti ini adalah semua double nilai mulai dari 0 hingga 1.

Warna bernama

Struktur ini Color juga mendefinisikan 240 bidang baca-saja statis publik untuk warna umum, seperti AliceBlue.

Color.Accent

Nilai menghasilkan Color.Accent warna khusus platform (dan terkadang dapat dipilih pengguna) yang terlihat di latar belakang gelap atau terang.

Color.Default

Nilai Color.Default mendefinisikan dengan semua saluran yang Color diatur ke -1, dan dimaksudkan untuk memberlakukan skema warna platform. Akibatnya, ia memiliki arti yang berbeda dalam konteks yang berbeda pada platform yang berbeda. Secara default, skema warna platform adalah:

  • iOS: teks gelap pada latar belakang terang.
  • Android: teks gelap di latar belakang terang.
  • Windows: teks gelap pada latar belakang terang.

Color.Transparent

Nilai Color.Transparent menentukan dengan semua saluran yang Color diatur ke nol.

Mengubah warna

Beberapa metode instans memungkinkan memodifikasi warna yang ada untuk membuat warna baru:

  • AddLuminosity mengembalikan dengan Color memodifikasi luminositas oleh delta yang disediakan.
  • MultiplyAlpha mengembalikan dengan Color memodifikasi alfa, mengalikannya dengan nilai alfa yang disediakan.
  • ToHex mengembalikan representasi heksadesimal string dari Color.
  • WithHueColormengembalikan , mengganti rona dengan nilai yang disediakan.
  • WithLuminosityColormengembalikan , mengganti luminositas dengan nilai yang disediakan.
  • WithSaturationColormengembalikan , mengganti saturasi dengan nilai yang disediakan.

Konversi implisit

Konversi implisit antara Xamarin.Forms.Color jenis dan System.Drawing.Color dapat dilakukan:

Xamarin.Forms.Color xfColor = Xamarin.Forms.Color.FromRgb(0, 72, 255);
System.Drawing.Color sdColor = System.Drawing.Color.FromArgb(38, 127, 0);

// Implicity convert from a Xamarin.Forms.Color to a System.Drawing.Color
System.Drawing.Color sdColor2 = xfColor;

// Implicitly convert from a System.Drawing.Color to a Xamarin.Forms.Color
Xamarin.Forms.Color xfColor2 = sdColor;

Contoh

Di XAML, warna biasanya dirujuk menggunakan nilai bernama mereka, atau dengan representasi Hex mereka:

<Label Text="Sea color"
       TextColor="Aqua" />
<Label Text="RGB"
       TextColor="#00FF00" />
<Label Text="Alpha plus RGB"
       TextColor="#CC00FF00" />
<Label Text="Tiny RGB"
       TextColor="#0F0" />
<Label Text="Tiny Alpha plus RGB"
       TextColor="#C0F0" />

Catatan

Saat menggunakan kompilasi XAML, nama warna tidak peka huruf besar/kecil dan karenanya dapat ditulis dalam huruf kecil. Untuk informasi selengkapnya tentang kompilasi XAML, lihat Kompilasi XAML.

Dalam C#, warna biasanya dirujuk menggunakan nilai bernama, atau dengan metode statisnya:

Label red    = new Label { Text = "Red",    TextColor = Color.Red };
Label orange = new Label { Text = "Orange", TextColor = Color.FromHex("FF6A00") };
Label yellow = new Label { Text = "Yellow", TextColor = Color.FromHsla(0.167, 1.0, 0.5, 1.0) };
Label green  = new Label { Text = "Green",  TextColor = Color.FromRgb (38, 127, 0) };
Label blue   = new Label { Text = "Blue",   TextColor = Color.FromRgba(0, 38, 255, 255) };
Label indigo = new Label { Text = "Indigo", TextColor = Color.FromRgb (0, 72, 255) };
Label violet = new Label { Text = "Violet", TextColor = Color.FromHsla(0.82, 1, 0.25, 1) };

Contoh berikut menggunakan OnPlatform ekstensi markup untuk secara selektif mengatur warna ActivityIndicator:

<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
                   IsRunning="True" />

Kode C# yang setara adalah:

ActivityIndicator activityIndicator = new ActivityIndicator
{
    Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
    IsRunning = true
};