Partager via


Couleurs dans Xamarin.Forms

La Color structure vous permet de spécifier des couleurs en tant que valeurs rouge-vert-bleu (RVB), les valeurs Hue-Saturation-Luminosity (HSL), les valeurs Hue-Saturation-Value (HSV) ou avec un nom de couleur. Un canal Alpha est également disponible pour indiquer la transparence.

Colorles 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 les double 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 HSV entières comprises entre 0 et 255.
  • Color.FromHsva pour les double valeurs HSV avec transparence.
  • Color.FromHsva pour les valeurs HSV entières 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 les double valeurs comprises entre 0 et 1.

Couleurs nommées

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

Color.Accent

La Color.Accent valeur entraîne 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 une Color valeur avec tous les canaux définis sur -1 et est destinée à 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 foncé sur un arrière-plan clair.
  • Android : texte foncé sur un arrière-plan clair.
  • Windows : texte foncé sur un arrière-plan clair.

Color.Transparent

La Color.Transparent valeur définit une Color valeur égale à zéro pour tous les canaux.

Modifier une couleur

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

  • AddLuminosity retourne une Color valeur en modifiant la luminosité par le delta fourni.
  • MultiplyAlpha retourne une Color valeur alpha en modifiant l’alpha, en la 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 System.Drawing.Color types 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 avec 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" />

Remarque

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 avec 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 de OnPlatform 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
};