Colori in Xamarin.Forms

Download Sample Scaricare l'esempio

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.

Colorgli 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 i double valori RGB da 0 a 1.
  • Color.FromRgb per i valori RGB integer compresi tra 0 e 255.
  • Color.FromRgba per i double valori RGB con trasparenza.
  • Color.FromRgba per i valori RGB integer con trasparenza.
  • Color.FromHsla per double i valori HSL con trasparenza.
  • Color.FromHsv per i double valori HSV compresi tra 0 e 1.
  • Color.FromHsv per valori HSV interi compresi tra 0 e 255.
  • Color.FromHsva per double i valori HSV con trasparenza.
  • Color.FromHsva per valori HSV interi con trasparenza.
  • Color.FromUint per un uint valore calcolato come (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromHex per un string 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 oggetto Color modificando la luminosità dal delta fornito.
  • MultiplyAlpha restituisce un oggetto Color modificando l'alfa, moltiplicandolo per il valore alfa fornito.
  • ToHex restituisce una rappresentazione esadecimale string di un oggetto Color.
  • WithHue restituisce un Coloroggetto , sostituendo la tonalità con il valore specificato.
  • WithLuminosity restituisce un Coloroggetto , sostituendo la luminosità con il valore fornito.
  • WithSaturation restituisce un Coloroggetto , 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
};