Barvy v Xamarin.Forms

Tato Color struktura umožňuje zadat barvy jako hodnoty Red-Green-Blue (RGB), hodnoty Hue-Saturation-Luminosity (HSL), hodnoty Hue-Saturation-Value (HSV) nebo s názvem barvy. K dispozici je také alfa kanál, který označuje průhlednost.

Color objekty lze vytvořit pomocí Color konstruktorů, které lze použít k určení šedého odstínu, hodnoty RGB nebo hodnoty RGB s průhledností. Ve všech případech jsou double argumenty hodnoty od 0 do 1.

K vytváření Color objektů můžete použít také statické metody:

  • Color.FromRgb pro double hodnoty RGB od 0 do 1.
  • Color.FromRgb pro celočíselné hodnoty RGB od 0 do 255.
  • Color.FromRgba pro double hodnoty RGB s průhledností.
  • Color.FromRgba pro celočíselné hodnoty RGB s průhledností.
  • Color.FromHsla pro double hodnoty HSL s průhledností.
  • Color.FromHsv pro double hodnoty HSV od 0 do 1.
  • Color.FromHsv pro celočíselné hodnoty HSV od 0 do 255.
  • Color.FromHsva pro double hodnoty HSV s průhledností.
  • Color.FromHsva pro celočíselné hodnoty HSV s průhledností.
  • Color.FromUint pro hodnotu vypočítanou uint jako (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromHexstring formát šestnáctkových číslic ve tvaru "#AARRGGBB" nebo "#RRGGBB" nebo "#ARGB" nebo "#RGB", kde každé písmeno odpovídá šestnáctkové číslici pro alfa, červenou, zelenou a modrou.

Po vytvoření Color je objekt neměnný. Vlastnosti barvy lze získat z následujících vlastností:

  • R, který představuje červený kanál barvy.
  • G, který představuje zelený kanál barvy.
  • B, který představuje modrý kanál barvy.
  • A, který představuje alfa kanál barvy.
  • Hue, který představuje kanál odstínu barvy.
  • Saturation, který představuje sytost kanálu barvy.
  • Luminosity, který představuje svítivost kanálu barvy.

Tyto vlastnosti jsou všechny double hodnoty od 0 do 1.

Pojmenované barvy

Struktura Color také definuje 240 veřejných statických polí jen pro čtení pro běžné barvy, například AliceBlue.

Color.Accent

Výsledkem Color.Accent hodnoty je barva specifická pro konkrétní platformu (a někdy se dá vybrat uživatelem), která je viditelná na tmavém nebo světlém pozadí.

Color.Default

Hodnota Color.Default definuje se všemi kanály Color nastavenými na -1 a je určená k vynucení barevného schématu platformy. V důsledku toho má jiný význam v různých kontextech na různých platformách. Ve výchozím nastavení jsou barevná schémata platformy:

  • iOS: tmavý text na světlém pozadí.
  • Android: tmavý text na světlém pozadí.
  • Windows: tmavý text na světlém pozadí.

Color.Transparent

Hodnota Color.Transparent definuje všechny kanály nastavené na nulu Color .

Úprava barvy

Několik metod instance umožňuje úpravě existující barvy vytvořit novou barvu:

  • AddLuminosityColor vrátí hodnotu úpravou světelnosti zadaným rozdílem.
  • MultiplyAlpha vrátí hodnotu Color úpravou alfa a vynásobením zadanou alfa hodnotou.
  • ToHex vrátí šestnáctkové string vyjádření Color.
  • WithHue vrátí hodnotu , Colornahrazení odstínu zadanou hodnotou.
  • WithLuminosityColorvrátí hodnotu , která nahradí světelnost zadanou hodnotou.
  • WithSaturation vrátí hodnotu , Colornahrazení sytosti zadanou hodnotou.

Implicitní převody

Implicitní převod mezi typy Xamarin.Forms.Color a System.Drawing.Color typy lze provést:

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;

Příklady

V JAZYCE XAML se barvy obvykle odkazují pomocí pojmenovaných hodnot nebo s jejich šestnáctkovými reprezentacemi:

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

Poznámka:

Při použití kompilace XAML se názvy barev nerozlišují malá a malá písmena, a proto je možné je zapsat malými písmeny. Další informace o kompilaci XAML naleznete v tématu Kompilace XAML.

V jazyce C# se barvy obvykle odkazují pomocí pojmenovaných hodnot nebo pomocí statických metod:

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

Následující příklad používá OnPlatform rozšíření značek k selektivnímu nastavení barvy ActivityIndicator:

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

Ekvivalentní kód jazyka C# je:

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