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ść.
Color
obiekty 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
dladouble
wartości RGB z zakresu od 0 do 1.Color.FromRgb
dla wartości integer RGB z zakresu od 0 do 255.Color.FromRgba
dladouble
wartości RGB z przezroczystością.Color.FromRgba
dla wartości integer RGB z przezroczystością.Color.FromHsla
dladouble
wartości HSL z przezroczystością.Color.FromHsv
dladouble
wartości HSV z zakresu od 0 do 1.Color.FromHsv
dla wartości HSV z zakresu od 0 do 255.Color.FromHsva
dladouble
wartości HSV z przezroczystością.Color.FromHsva
dla wartości HSV z liczbą całkowitą z przezroczystością.Color.FromUint
dla wartości obliczonejuint
jako (B + 256 * (G + 256 * (R + 256 * A)).Color.FromHex
string
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ę szesnastkowastring
obiektuColor
.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
};