web-dev-qa-db-fra.com

Spécifier une couleur RVB en XAML avec Xamarin

Je crée des styles d'application dans mon application et je souhaite définir des couleurs explicites à utiliser par clé. Dans WPF XAML, je créerais un SolidColorBrush pour définir les valeurs RGB/ARGB. Dans Xamarin XAML, dois-je convertir cela en hexadécimal pour définir la même couleur en XAML? L'extrait ci-dessous provient de WPF XAML.

<SolidColorBrush
    x:Key="blueColor">
    <SolidColorBrush.Color>
        <Color
            A="255"
            R="50"
            G="150"
            B="225" />
    </SolidColorBrush.Color>
</SolidColorBrush>
6
Rasmus Christensen

Xamarin.Forms fournit une classe Color multiplate-forme.

Utilisation de Xaml:

Les couleurs peuvent également être facilement référencées dans Xaml en utilisant les noms de couleurs définis ou les représentations Hex indiquées ici :

<Label Text="Sea color" BackgroundColor="Aqua" />
<Label Text="RGB" BackgroundColor="#00FF00" />
<Label Text="Alpha plus RGB" BackgroundColor="#CC00FF00" />
<Label Text="Tiny RGB" BackgroundColor="#0F0" />
<Label Text="Tiny Alpha plus RGB" BackgroundColor="#C0F0" />

La classe Color fournit un certain nombre de méthodes pour créer une instance de couleur.

  • Couleurs nommées - une collection de couleurs nommées communes, notamment le rouge, le vert et le bleu.
  • FromHex - valeur de chaîne similaire à la syntaxe utilisée en HTML, par exemple "00FF00". 
  • Alpha peut éventuellement être spécifié comme première paire de caractères ("CC00FF00").
  • FromHsla - Double valeurs de teinte, saturation et luminosité, avec une valeur alpha optionnelle (0.0-1.0).
  • FromRgb - Valeurs int, rouge, vert et bleu (0-255).
  • FromRgba - Valeurs rouge, verte, bleue et alpha int (0-255).
  • FromUint - définit une double valeur représentant argb.

Ref: Utilisation des couleurs dans Xamarin.Forms

6
SushiHangover

Selon Xamarin WorkingWithColors sample, vous pouvez faire quelque chose comme ceci:

<Color
  x:Key="BlueColor">
  <x:Arguments>
    <x:Double>.4</x:Double> <!-- R/255 -->
    <x:Double>.62</x:Double> <!-- G/255 -->
    <x:Double>.95</x:Double> <!-- B/255 -->
    <x:Double>.2</x:Double> <!-- A: 0.0-1.0 -->
  </x:Arguments>
</Color>

Leur exemple ne montre pas l'utilisation du canal alpha, mais je viens de le tester et depuis le 30 mai 2017, il semble bien fonctionner.

Cependant, sachez que cela ne semble pas être documenté. Le guide Xamarin.Forms "Couleurs" , qui va avec le code ci-dessus, ne le mentionne pas non plus, cela peut donc changer sans préavis.

2
j.f.

En réponse directe à la question, vous ne pouvez pas spécifier un x: FactoryMethod = "FromRgb" dans xaml pour spécifier les couleurs en RVB à partir de ressources. Pour contourner ce problème, vous devez spécifier les couleurs à l'aide de l'approche "FromHex" et en effectuant la conversion appropriée, par exemple.

<Color x:Key="somethingGreenish" x:FactoryMethod="FromHex">
    <x:Arguments>
        <x:String>#97cd75</x:String>
    </x:Arguments>
</Color>
1
The Senator