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
prodouble
hodnoty RGB od 0 do 1.Color.FromRgb
pro celočíselné hodnoty RGB od 0 do 255.Color.FromRgba
prodouble
hodnoty RGB s průhledností.Color.FromRgba
pro celočíselné hodnoty RGB s průhledností.Color.FromHsla
prodouble
hodnoty HSL s průhledností.Color.FromHsv
prodouble
hodnoty HSV od 0 do 1.Color.FromHsv
pro celočíselné hodnoty HSV od 0 do 255.Color.FromHsva
prodouble
hodnoty HSV s průhledností.Color.FromHsva
pro celočíselné hodnoty HSV s průhledností.Color.FromUint
pro hodnotu vypočítanouuint
jako (B + 256 * (G + 256 * (R + 256 * A))).Color.FromHex
string
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:
AddLuminosity
Color
vrátí hodnotu úpravou světelnosti zadaným rozdílem.MultiplyAlpha
vrátí hodnotuColor
úpravou alfa a vynásobením zadanou alfa hodnotou.ToHex
vrátí šestnáctkovéstring
vyjádřeníColor
.WithHue
vrátí hodnotu ,Color
nahrazení odstínu zadanou hodnotou.WithLuminosity
Color
vrátí hodnotu , která nahradí světelnost zadanou hodnotou.WithSaturation
vrátí hodnotu ,Color
nahrazení 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
};