Cores em Xamarin.Forms
A Color
estrutura permite especificar cores como valores de vermelho-verde-azul (RGB), valores de matiz-saturação-luminosidade (HSL), valores de valor de saturação de matiz (HSV) ou com um nome de cor. Um canal Alfa 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 de 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 inteiros de HSV de 0 a 255.Color.FromHsva
paradouble
valores de HSV com transparência.Color.FromHsva
para valores inteiros HSV 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 no formato "#AARRGGBB" ou "#RRGGBB" ou "#ARGB" ou "#RGB", em que cada letra corresponde a um dígito hexadecimal para os canais alfa, vermelho, verde e azul.
Depois de 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.
Todas essas propriedades são valores double
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 a 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 fundo claro.
- Android: texto escuro em um fundo claro.
- Windows: texto escuro em um fundo claro.
Color.Transparent
O Color.Transparent
valor define a 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
.WithHue
retorna umColor
, substituindo o matiz 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 executada:
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 normalmente 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.
Em C#, as cores normalmente são 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
};