Colori in Xamarin.Forms
La Color
struttura consente di specificare i colori come valori Red-Green-Blue (RGB), Hue-Saturation-Luminosity (HSL), valori Hue-Saturation-Value (HSV) o con un nome di colore. È disponibile anche un canale Alfa per indicare la trasparenza.
Color
gli oggetti possono essere creati con i Color
costruttori, che possono essere usati per specificare un'ombreggiatura grigia, un valore RGB o un valore RGB con trasparenza. In tutti i casi, gli argomenti sono double
valori compresi tra 0 e 1.
È anche possibile usare metodi statici per creare Color
oggetti:
Color.FromRgb
per idouble
valori RGB da 0 a 1.Color.FromRgb
per i valori RGB integer compresi tra 0 e 255.Color.FromRgba
per idouble
valori RGB con trasparenza.Color.FromRgba
per i valori RGB integer con trasparenza.Color.FromHsla
perdouble
i valori HSL con trasparenza.Color.FromHsv
per idouble
valori HSV compresi tra 0 e 1.Color.FromHsv
per valori HSV interi compresi tra 0 e 255.Color.FromHsva
perdouble
i valori HSV con trasparenza.Color.FromHsva
per valori HSV interi con trasparenza.Color.FromUint
per unuint
valore calcolato come (B + 256 * (G + 256 * (R + 256 * A))).Color.FromHex
per unstring
formato di cifre esadecimali nel formato "#AARRGGBB" o "#RRGGBB" o "#ARGB" o "#RGB", dove ogni lettera corrisponde a una cifra esadecimale per i canali alfa, rosso, verde e blu.
Una volta creato, un Color
oggetto non è modificabile. Le caratteristiche del colore possono essere ottenute dalle proprietà seguenti:
R
, che rappresenta il canale rosso del colore.G
, che rappresenta il canale verde del colore.B
, che rappresenta il canale blu del colore.A
, che rappresenta il canale alfa del colore.Hue
, che rappresenta il canale di tonalità del colore.Saturation
, che rappresenta il canale di saturazione del colore.Luminosity
, che rappresenta il canale di luminosità del colore.
Queste proprietà sono tutti valori double
compresi tra 0 e 1.
Colori denominati
La Color
struttura definisce anche 240 campi di sola lettura statici pubblici per i colori comuni, ad esempio AliceBlue
.
Color.Accent
Il Color.Accent
valore restituisce un colore specifico della piattaforma (e talvolta selezionabile dall'utente) visibile su uno sfondo scuro o chiaro.
Color.Default
Il Color.Default
valore definisce un Color
oggetto con tutti i canali impostati su -1 ed è progettato per applicare la combinazione di colori della piattaforma. Di conseguenza, ha un significato diverso in contesti diversi su piattaforme diverse. Per impostazione predefinita, le combinazioni di colori della piattaforma sono:
- iOS: testo scuro su uno sfondo chiaro.
- Android: testo scuro su uno sfondo chiaro.
- Windows: testo scuro su uno sfondo chiaro.
Color.Transparent
Il Color.Transparent
valore definisce un Color
oggetto con tutti i canali impostati su zero.
Modificare un colore
Diversi metodi di istanza consentono di modificare un colore esistente per creare un nuovo colore:
AddLuminosity
restituisce un oggettoColor
modificando la luminosità dal delta fornito.MultiplyAlpha
restituisce un oggettoColor
modificando l'alfa, moltiplicandolo per il valore alfa fornito.ToHex
restituisce una rappresentazione esadecimalestring
di un oggettoColor
.WithHue
restituisce unColor
oggetto , sostituendo la tonalità con il valore specificato.WithLuminosity
restituisce unColor
oggetto , sostituendo la luminosità con il valore fornito.WithSaturation
restituisce unColor
oggetto , sostituendo la saturazione con il valore fornito.
Conversioni implicite
È possibile eseguire la conversione implicita tra i Xamarin.Forms.Color
tipi e 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;
Esempi
In XAML viene in genere fatto riferimento ai colori usando i valori denominati o con le relative rappresentazioni esadecimali:
<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" />
Nota
Quando si usa la compilazione XAML, i nomi dei colori non fanno distinzione tra maiuscole e minuscole e pertanto possono essere scritti in lettere minuscole. Per altre informazioni sulla compilazione XAML, vedere Compilazione XAML.
In C# viene in genere fatto riferimento ai colori usando i valori denominati o con i relativi metodi statici:
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) };
Nell'esempio seguente viene usata l'estensione OnPlatform
di markup per impostare in modo selettivo il colore di un oggetto ActivityIndicator
:
<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
IsRunning="True" />
Il codice C# equivalente è il seguente:
ActivityIndicator activityIndicator = new ActivityIndicator
{
Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
IsRunning = true
};