Cores em Xamarin.Forms
A Color
estrutura permite especificar cores como valores RGB (Vermelho-Verde-Azul), valores HSL (Hue-Saturation-Luminosity), valores HSV (Hue-Saturation-Value) ou com um nome de cor. Um canal Alpha também está disponível para indicar transparência.
Color
objetos podem ser criados com os Color
construtores, que podem ser usados para especificar um tom cinza, um valor RGB ou um valor RGB com transparência. Em todos os casos, os argumentos são double
valores que variam de 0 a 1.
Você também pode usar métodos estáticos para criar Color
objetos:
Color.FromRgb
paradouble
valores RGB de 0 a 1.Color.FromRgb
para valores RGB inteiros de 0 a 255.Color.FromRgba
paradouble
valores RGB com transparência.Color.FromRgba
para valores RGB inteiros com transparência.Color.FromHsla
paradouble
valores HSL com transparência.Color.FromHsv
paradouble
valores de HSV de 0 a 1.Color.FromHsv
para valores HSV inteiros de 0 a 255.Color.FromHsva
paradouble
valores HSV com transparência.Color.FromHsva
para valores HSV inteiros com transparência.Color.FromUint
para umuint
valor calculado como (B + 256 * (G + 256 * (R + 256 * A))).Color.FromHex
para umstring
formato de dígitos hexadecimais na forma "#AARRGGBB" ou "#RRGGBB" ou "#ARGB" ou "#RGB", onde cada letra corresponde a um dígito hexadecimal para os canais alfa, vermelho, verde e azul.
Uma vez criado, um Color
objeto é imutável. As características da cor podem ser obtidas a partir das seguintes propriedades:
R
, que representa o canal vermelho da cor.G
, que representa o canal verde da cor.B
, que representa o canal azul da cor.A
, que representa o canal alfa da cor.Hue
, que representa o canal de matiz da cor.Saturation
, que representa o canal de saturação da cor.Luminosity
, que representa o canal de luminosidade da cor.
Essas propriedades são todos os double
valores que variam de 0 a 1.
Cores nomeadas
A Color
estrutura também define 240 campos públicos estáticos somente leitura para cores comuns, como AliceBlue
.
Color.Accent
O Color.Accent
valor resulta em uma cor específica da plataforma (e às vezes selecionável pelo usuário) que é visível em um plano de fundo escuro ou claro.
Cor.Padrão
O Color.Default
valor define um Color
com todos os canais definidos como -1 e destina-se a impor o esquema de cores da plataforma. Consequentemente, tem um significado diferente em diferentes contextos em diferentes plataformas. Por padrão, os esquemas de cores da plataforma são:
- iOS: texto escuro em um plano de fundo claro.
- Android: texto escuro em um fundo claro.
- Windows: texto escuro em um plano de fundo claro.
Color.Transparent
O Color.Transparent
valor define um Color
com todos os canais definidos como zero.
Modificar uma cor
Vários métodos de instância permitem modificar uma cor existente para criar uma nova cor:
AddLuminosity
retorna aColor
modificando a luminosidade pelo delta fornecido.MultiplyAlpha
retorna aColor
modificando o alfa, multiplicando-o pelo valor alfa fornecido.ToHex
Retorna uma representação hexadecimalstring
de umColor
arquivo .WithHue
retorna umColor
, substituindo a tonalidade pelo valor fornecido.WithLuminosity
retorna umColor
, substituindo a luminosidade pelo valor fornecido.WithSaturation
retorna umColor
, substituindo a saturação pelo valor fornecido.
Conversões implícitas
A conversão implícita entre os Xamarin.Forms.Color
tipos e System.Drawing.Color
pode ser realizada:
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;
Exemplos
Em XAML, as cores geralmente são referenciadas usando seus valores nomeados ou com suas representações hexadecimais:
<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" />
Observação
Ao usar a compilação XAML, os nomes de cores não diferenciam maiúsculas de minúsculas e, portanto, podem ser escritos em minúsculas. Para obter mais informações sobre a compilação de XAML, confira Compilação de XAML.
No C#, as cores são normalmente referenciadas usando seus valores nomeados ou com seus métodos estáticos:
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) };
O exemplo a seguir usa a OnPlatform
extensão de marcação para definir seletivamente a cor de um ActivityIndicator
:
<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
IsRunning="True" />
Este é o código C# equivalente:
ActivityIndicator activityIndicator = new ActivityIndicator
{
Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
IsRunning = true
};