2016-04-15 20 views
6

Sto creando alcuni stili di applicazione nella mia app e desidero definire alcuni colori espliciti da usare per chiave. In XAML WPF, vorrei creare un SolidColorBrush per definire i valori RGB/ARGB. In Xamarin XAML, devo convertirlo in esadecimale per definire lo stesso colore in XAML? Il frammento di seguito è tratto da WPF XAML.Specificare un colore RGB in XAML con Xamarin

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

A volte ci pensi meglio dopo aver scritto :) Ho appena provato questo e finora sembra ok.Rimosso il SolidColorBrush e aggiunto la chiave all'elemento colori \t \t \t –

+0

Non funziona .... :( –

risposta

5

Xamarin.Forms fornisce un cross-platform Color di classe.

Utilizzando da Xaml:

I colori possono anche essere facilmente riferimento in XAML utilizzando i nomi definiti colori o le rappresentazioni Hex indicati qui:

<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 fornisce una serie di metodi per costruire un'istanza di colore

  • Colori denominati: una raccolta di colori denominati comuni, tra cui rosso, verde e blu.
  • FromHex: valore di stringa simile alla sintassi utilizzata in HTML, ad esempio "00FF00".
  • L'alfa può essere facoltativamente specificata come prima coppia di caratteri ("CC00FF00").
  • FromHsla - Doppio valore di tonalità, saturazione e luminosità, con valore alfa opzionale (0,0-1,0).
  • FromRgb - valori int rossi, verdi e blu (0-255).
  • FromRgba - valori int rosso, verde, blu e alfa (0-255).
  • FromUint - imposta un valore doppio singolo che rappresenta argb.

Rif: Using Colors in Xamarin.Forms

+1

Sì, ho letto anche quella parte e la definizione RGB sembra non essere disponibile. Quindi ho solo bisogno di convertire in esadecimale. –

+0

Potresti modificare la tua risposta in modo esplicito? La domanda che l'OP ha chiesto è 'Specifica un colore RGB in xaml con Xamarin' (non una domanda abbastanza ma abbastanza vicina). La risposta è che "non puoi" e che devi convertire in esadecimale? –

1

In risposta diretta alla domanda, non può specificare una x: FactoryMethod = "FromRgb" in XAML per specificare i colori in RGB da risorse. Per ovviare a questo problema, devi specificare i colori usando l'approccio "FromHex" e convertendo a seconda dei casi, ad es.

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

Secondo campione di Xamarin WorkingWithColors, si può fare qualcosa di simile:

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

Il loro esempio non mostra l'utilizzo del canale alfa, ma ho appena provato e come del 30 maggio , 2017, sembra funzionare bene.

Tuttavia, essere consapevoli del fatto che questo non sembra essere documentato. Il Xamarin.Forms "Colors" guide, che contiene il codice sopra riportato, non lo menziona, quindi questo potrebbe cambiare senza preavviso.