Partilhar via


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 para double valores RGB de 0 a 1.
  • Color.FromRgb para valores RGB inteiros de 0 a 255.
  • Color.FromRgba para double valores RGB com transparência.
  • Color.FromRgba para valores RGB inteiros com transparência.
  • Color.FromHsla para double valores HSL com transparência.
  • Color.FromHsv para double valores de HSV de 0 a 1.
  • Color.FromHsv para valores HSV inteiros de 0 a 255.
  • Color.FromHsva para double valores HSV com transparência.
  • Color.FromHsva para valores HSV inteiros com transparência.
  • Color.FromUint para um uint valor calculado como (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromHex para um string 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 a Color modificando a luminosidade pelo delta fornecido.
  • MultiplyAlpha retorna a Color modificando o alfa, multiplicando-o pelo valor alfa fornecido.
  • ToHex Retorna uma representação hexadecimal string de um Colorarquivo .
  • WithHue retorna um Color, substituindo a tonalidade pelo valor fornecido.
  • WithLuminosity retorna um Color, substituindo a luminosidade pelo valor fornecido.
  • WithSaturation retorna um Color, 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
};