Couleurs dans Xamarin.Forms
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
pourdouble
les valeurs RVB comprises entre 0 et 1.Color.FromRgb
pour les valeurs RVB entières comprises entre 0 et 255.Color.FromRgba
pour lesdouble
valeurs RVB avec transparence.Color.FromRgba
pour les valeurs RVB entières avec transparence.Color.FromHsla
pourdouble
les valeurs HSL avec transparence.Color.FromHsv
pourdouble
les valeurs HSV comprises entre 0 et 1.Color.FromHsv
pour les valeurs entières HSV comprises entre 0 et 255.Color.FromHsva
pourdouble
les valeurs HSV avec transparence.Color.FromHsva
pour les valeurs entières HSV avec transparence.Color.FromUint
pour uneuint
valeur calculée comme (B + 256 * (G + 256 * (R + 256 * A))).Color.FromHex
pour unstring
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 unColor
en modifiant la luminosité par le delta fourni.MultiplyAlpha
retourne unColor
en modifiant l’alpha, en le multipliant par la valeur alpha fournie.ToHex
retourne une représentation hexadécimalestring
d’unColor
.WithHue
retourne unColor
, en remplaçant la teinte par la valeur fournie.WithLuminosity
retourne unColor
, en remplaçant la luminosité par la valeur fournie.WithSaturation
retourne unColor
, 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
};