Couleurs dans Xamarin.Forms

Télécharger l’exemple Télécharger l’exemple

La Color structure vous permet de spécifier des couleurs comme des valeurs RVB (Rouge-Vert-Bleu), des valeurs Hue-Saturation-Luminosity (HSL), des valeurs Hue-Saturation-Value (HSV) ou avec un nom de couleur. Un canal Alpha est également disponible pour indiquer la transparence.

Color les objets peuvent être créés avec les Color constructeurs, qui peuvent être utilisés pour spécifier une nuance grise, une valeur RVB ou une valeur RVB avec transparence. Dans tous les cas, les arguments sont double des valeurs comprises entre 0 et 1.

Vous pouvez également utiliser des méthodes statiques pour créer des Color objets :

  • Color.FromRgb pour double les valeurs RVB comprises entre 0 et 1.
  • Color.FromRgb pour les valeurs RVB entières comprises entre 0 et 255.
  • Color.FromRgba pour les double valeurs RVB avec transparence.
  • Color.FromRgba pour les valeurs RVB entières avec transparence.
  • Color.FromHsla pour double les valeurs HSL avec transparence.
  • Color.FromHsv pour double les valeurs HSV comprises entre 0 et 1.
  • Color.FromHsv pour les valeurs entières HSV comprises entre 0 et 255.
  • Color.FromHsva pour double les valeurs HSV avec transparence.
  • Color.FromHsva pour les valeurs entières HSV avec transparence.
  • Color.FromUint pour une uint valeur calculée comme (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromHex pour un string format de chiffres hexadécimaux sous la forme « #AARRGGBB » ou « #RRGGBB » ou « #ARGB » ou « #RGB », où chaque lettre correspond à un chiffre hexadécimal pour les canaux alpha, rouge, vert et bleu.

Une fois créé, un Color objet est immuable. Les caractéristiques de la couleur peuvent être obtenues à partir des propriétés suivantes :

  • R, qui représente le canal rouge de la couleur.
  • G, qui représente le canal vert de la couleur.
  • B, qui représente le canal bleu de la couleur.
  • A, qui représente le canal alpha de la couleur.
  • Hue, qui représente le canal de teinte de la couleur.
  • Saturation, qui représente le canal de saturation de la couleur.
  • Luminosity, qui représente le canal de luminosité de la couleur.

Ces propriétés sont toutes double des valeurs comprises entre 0 et 1.

Couleurs nommées

La Color structure définit également 240 champs publics statiques en lecture seule pour les couleurs courantes, telles que AliceBlue.

Color.Accent

La Color.Accent valeur génère une couleur spécifique à la plateforme (et parfois sélectionnable par l’utilisateur) visible sur un arrière-plan sombre ou clair.

Color.Default

La Color.Default valeur définit un Color avec tous les canaux défini sur -1 et est destiné à appliquer le jeu de couleurs de la plateforme. Par conséquent, il a une signification différente dans différents contextes sur différentes plateformes. Par défaut, les jeux de couleurs de plateforme sont les suivants :

  • iOS : texte sombre sur un arrière-plan clair.
  • Android : texte foncé sur un arrière-plan clair.
  • Windows : texte sombre sur un arrière-plan clair.

Color.Transparent

La Color.Transparent valeur définit un Color avec tous les canaux définis sur zéro.

Modifier une couleur

Plusieurs méthodes instance permettent de modifier une couleur existante pour en créer une nouvelle :

  • AddLuminosity retourne un Color en modifiant la luminosité par le delta fourni.
  • MultiplyAlpha retourne un Color en modifiant l’alpha, en le multipliant par la valeur alpha fournie.
  • ToHex retourne une représentation hexadécimale string d’un Color.
  • WithHue retourne un Color, en remplaçant la teinte par la valeur fournie.
  • WithLuminosity retourne un Color, en remplaçant la luminosité par la valeur fournie.
  • WithSaturation retourne un Color, en remplaçant la saturation par la valeur fournie.

Conversions implicites

La conversion implicite entre les Xamarin.Forms.Color types et System.Drawing.Color peut être effectuée :

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;

Exemples

En XAML, les couleurs sont généralement référencées à l’aide de leurs valeurs nommées ou de leurs représentations hexadécimaux :

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

Notes

Lorsque vous utilisez la compilation XAML, les noms de couleurs ne respectent pas la casse et peuvent donc être écrits en minuscules. Pour plus d’informations sur la compilation XAML, consultez Compilation XAML.

En C#, les couleurs sont généralement référencées à l’aide de leurs valeurs nommées ou de leurs méthodes statiques :

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

L’exemple suivant utilise l’extension OnPlatform de balisage pour définir de manière sélective la couleur d’un ActivityIndicator:

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

Le code C# équivalent est :

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