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.
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 lesdouble
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 HSV entières comprises entre 0 et 255.Color.FromHsva
pour lesdouble
valeurs HSV avec transparence.Color.FromHsva
pour les valeurs HSV entières 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 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 uneColor
valeur en modifiant la luminosité par le delta fourni.MultiplyAlpha
retourne uneColor
valeur alpha en modifiant l’alpha, en la 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
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
};