Udostępnij za pośrednictwem


Kolory w Xamarin.Forms

Struktura Color pozwala określić kolory jako wartości Red-Green-Blue (RGB), Hue-Saturation-Luminosity (HSL), Hue-Saturation-Value (HSV) wartości lub z nazwą koloru. Kanał alfa jest również dostępny, aby wskazać przezroczystość.

Colorobiekty można tworzyć za pomocą Color konstruktorów, których można użyć do określenia szarego cienia, wartości RGB lub wartości RGB z przezroczystością. We wszystkich przypadkach argumenty to double wartości z zakresu od 0 do 1.

Można również użyć metod statycznych do tworzenia Color obiektów:

  • Color.FromRgb dla double wartości RGB z zakresu od 0 do 1.
  • Color.FromRgb dla wartości integer RGB z zakresu od 0 do 255.
  • Color.FromRgba dla double wartości RGB z przezroczystością.
  • Color.FromRgba dla wartości integer RGB z przezroczystością.
  • Color.FromHsla dla double wartości HSL z przezroczystością.
  • Color.FromHsv dla double wartości HSV z zakresu od 0 do 1.
  • Color.FromHsv dla wartości HSV z zakresu od 0 do 255.
  • Color.FromHsva dla double wartości HSV z przezroczystością.
  • Color.FromHsva dla wartości HSV z liczbą całkowitą z przezroczystością.
  • Color.FromUint dla wartości obliczonej uint jako (B + 256 * (G + 256 * (R + 256 * A)).
  • Color.FromHexstring dla formatu cyfr szesnastowych w postaci "#AARRGGBB" lub "#RRGGBB" lub "#ARGB" lub "#RGB", gdzie każda litera odpowiada cyfrze szesnastkowej dla kanałów alfa, czerwony, zielony i niebieski.

Po utworzeniu Color obiekt jest niezmienny. Właściwości koloru można uzyskać z następujących właściwości:

  • R, który reprezentuje czerwony kanał koloru.
  • G, który reprezentuje zielony kanał koloru.
  • B, który reprezentuje niebieski kanał koloru.
  • A, który reprezentuje kanał alfa koloru.
  • Hue, który reprezentuje kanał odcieni koloru.
  • Saturation, który reprezentuje kanał nasycenia koloru.
  • Luminosity, który reprezentuje kanał jaskrawości koloru.

Te właściwości to wszystkie double wartości z zakresu od 0 do 1.

Nazwane kolory

Struktura Color definiuje również 240 publicznych pól statycznych tylko do odczytu dla typowych kolorów, takich jak AliceBlue.

Color.Accent

Wartość Color.Accent powoduje użycie koloru specyficznego dla platformy (a czasami wybieranego przez użytkownika), który jest widoczny na ciemnym lub jasnym tle.

Color.Default

Wartość Color.Default definiuje Color element ze wszystkimi kanałami ustawionymi na -1 i ma na celu wymuszenie schematu kolorów platformy. W związku z tym ma inne znaczenie w różnych kontekstach na różnych platformach. Domyślnie schematy kolorów platformy to:

  • iOS: ciemny tekst na jasnym tle.
  • Android: ciemny tekst na jasnym tle.
  • Windows: ciemny tekst na jasnym tle.

Color.Transparent

Wartość Color.Transparent definiuje Color element ze wszystkimi kanałami ustawionymi na zero.

Modyfikowanie koloru

Kilka metod wystąpienia umożliwia zmodyfikowanie istniejącego koloru w celu utworzenia nowego koloru:

  • AddLuminosity metoda zwraca wartość , Color modyfikując jasność dostarczonej różnicy.
  • MultiplyAlpha metoda zwraca wartość Color przez zmodyfikowanie alfa, pomnożąc ją przez podaną wartość alfa.
  • ToHex Zwraca reprezentację szesnastkowa string obiektu Color.
  • WithHue Zwraca wartość Color, zastępując odcień podaną wartością.
  • WithLuminosity Zwraca wartość Color, zastępując jasność podaną wartością.
  • WithSaturation Zwraca wartość Color, zastępując nasycenie podaną wartością.

Niejawne konwersje

Można wykonać niejawną konwersję między typami Xamarin.Forms.Color i System.Drawing.Color :

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;

Przykłady

W języku XAML kolory są zwykle przywoływały przy użyciu nazwanych wartości lub z reprezentacjami szesnastkowymi:

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

Uwaga

W przypadku korzystania z kompilacji XAML nazwy kolorów są bez uwzględniania wielkości liter i dlatego mogą być zapisywane małymi literami. Aby uzyskać więcej informacji na temat kompilacji XAML, zobacz Kompilacja XAML.

W języku C# kolory są zwykle przywołyyzowane przy użyciu nazwanych wartości lub ze statycznymi metodami:

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) };

W poniższym przykładzie OnPlatform użyto rozszerzenia znaczników, aby selektywnie ustawić kolor elementu ActivityIndicator:

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

Równoważny kod języka C# to:

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