Cores

Visualizar amostra. Visualizar a amostra

A Color classe, no Microsoft.Maui.Graphics namespace, permite especificar cores como valores RGB (Red-Green-Blue), valores HSL (Hue-Saturation-Luminosity), valores HSV (Hue-Saturation-Value) ou com um nome de cor. Um canal Alfa também está disponível para indicar transparência.

Color os objetos podem ser criados com Color construtores, que podem ser usados para especificar um tom cinza, um valor RGB ou um valor RGB com transparência. As sobrecargas do construtor aceitam valores float que variam de 0 a 1, byte, além de valores int.

Observação

O construtor padrão Color cria um objeto preto Color .

Você também pode usar os seguintes métodos estáticos para criar Color objetos:

  • Color.FromRgb de valores RGB float que variam de 0 a 1.
  • Color.FromRgb de valores RGB double que variam de 0 a 1.
  • Color.FromRgb de byte valores RGB que variam de 0 a 255.
  • Color.FromInt de int valores RGB que variam de 0 a 255.
  • Color.FromRgba de float valores RGBA que variam de 0 a 1.
  • Color.FromRgba de double valores RGBA que variam de 0 a 1.
  • Color.FromRgba de valores RGBA byte que variam de 0 a 255.
  • Color.FromRgba de valores RGBA int que variam de 0 a 255.
  • Color.FromRgba de um valor hexadecimal baseado em string no formato "#RRGGBBAA", ou "#RRGGBB", ou "#RGBA", ou "#RGB", em que cada letra corresponde a um dígito hexadecimal para os canais alfa, vermelho, verde e azul.
  • Color.FromHsla de valores HSLA float.
  • Color.FromHsla de valores HSLA double.
  • Color.FromHsv de valores HSV float que variam de 0 a 1.
  • Color.FromHsv a partir de valores HSV int que variam de 0 a 255.
  • Color.FromHsva de valores HSVA float.
  • Color.FromHsva de valores HSV int.
  • Color.FromInt de um valor calculado int como (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromUint de um valor calculado uint como (B + 256 * (G + 256 * (R + 256 * A))).
  • Color.FromArgb de um valor hexadecimal baseado em string 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.

Observação

Além dos métodos listados acima, a Color classe também tem Parse e TryParse métodos que criam Color objetos a partir de string argumentos.

Uma vez criado, um Color objeto é imutável. As características da cor podem ser obtidas dos seguintes float campos, que variam de 0 a 1:

  • Red, que representa o canal vermelho da cor.
  • Green, que representa o canal verde da cor.
  • Blue, que representa o canal azul da cor.
  • Alpha, que representa o canal alfa da cor.

Além disso, as características da cor podem ser obtidas dos seguintes métodos:

  • GetHue, que retorna um float que representa o canal de matiz da cor.
  • GetSaturation, que retorna um float que representa o canal de saturação da cor.
  • GetLuminosity, que retorna um float que representa o canal de luminosidade da cor.

Cores nomeadas

A Colors classe define 148 campos somente leitura estáticos públicos para cores comuns, como AntiqueWhite, MidnightBluee YellowGreen.

Modificar uma cor

Os seguintes métodos de instância modificam uma cor existente para criar uma nova cor:

Conversões

Os seguintes métodos de instância convertem um Color em uma representação alternativa:

  • AsPaint retorna um SolidPaint objeto cuja Color propriedade está definida como a cor.
  • ToHex retorna uma representação hexadecimal string de um Color.
  • ToArgbHex retorna uma representação ARGB em hexadecimal string de um Color.
  • ToRgbaHex retorna uma representação RGBA hexadecimal string de um Color.
  • ToInt retorna uma representação ARGB int de um Color.
  • ToUint retorna uma representação ARGB uint de um Color.
  • ToRgb converte um Color em valores de RGB byte, que são retornados como argumentos out.
  • ToRgba converte um Color em valores RGBA byte que são retornados como argumentos out.
  • ToHsl converte Color em valores HSL float que são passados como argumentos out.

Exemplos

No XAML, as cores normalmente são referenciadas usando seus valores nomeados ou com hexadecimal:

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

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 = Colors.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 AliceBlue, iOS=MidnightBlue}"
                   IsRunning="True" />

O código C# equivalente é:

ActivityIndicator activityIndicator = new ActivityIndicator
{
    Color = DeviceInfo.Platform == DevicePlatform.iOS ? Colors.MidnightBlue : Colors.AliceBlue,
    IsRunning = true
};