Colores en Xamarin.Forms
La estructura permite especificar colores como valores Color rojo-verde-azul (RGB), valores Hue-Saturation-Luminosity (HSL), valores Hue-Saturation-Value (HSV) o con un nombre de color. También hay disponible un canal alfa para indicar la transparencia.
ColorLos objetos se pueden crear con los constructores, que se pueden usar para especificar un tipo de vínculo de datos Xamarin_Forms ColorColor _Color__ctor_System_Double_" data-linktype="absolute-path">gray shade , un sombreado gris de Xamarin_Forms Color _Color__ctor_System_Double_System_Double_System_Double_" data-linktype="absolute-path">RGB value o un valor RGB de Xamarin_Forms _Color__ctor_System_Double_System_Double_System_Double_System_Double_" data-linktype="absolute-path">RGB con transparencia . En todos los casos, los argumentos double son valores que van de 0 a 1.
También puede usar métodos estáticos para crear Color objetos:
- _Color_FromRgb_System_Double_System_Double_System_Double_" data-linktype="absolute-path">para los
Color.FromRgbvaloresdoubleRGB de 0 a 1. - Xamarin_Forms _Color_FromRgb_System_Int32_System_Int32_System_Int32_" data-linktype="absolute-path">valores RGB enteros de
Color.FromRgb0 a 255. - Xamarin_Forms _Color_FromRgba_System_Double_System_Double_System_Double_System_Double_" data-linktype="absolute-path">
Color.FromRgbavalores RGB condoubletransparencia. - Xamarin_Forms _Color_FromRgba_System_Int32_System_Int32_System_Int32_System_Int32_" data-linktype="absolute-path">
Color.FromRgbavalores RGB enteros con transparencia. - Xamarin_Forms _Color_FromHsla_System_Double_System_Double_System_Double_System_Double_" data-linktype="absolute-path">
Color.FromHslavalores dedoubleHSL con transparencia. - Xamarin_Forms _Color_FromHsv_System_Double_System_Double_System_Double_" data-linktype="absolute-path">para los valores
Color.FromHsvdoubleHSV de 0 a 1. - Xamarin_Forms _Color_FromHsv_System_Int32_System_Int32_System_Int32_" data-linktype="absolute-path">valores de HSV enteros de 0 a
Color.FromHsv255. - Xamarin_Forms _Color_FromHsva_System_Double_System_Double_System_Double_System_Double_" data-linktype="absolute-path">
Color.FromHsvavaloresdoubleHSV con transparencia. - Xamarin_Forms _Color_FromHsva_System_Int32_System_Int32_System_Int32_System_Int32_" data-linktype="absolute-path">
Color.FromHsvavalores de HSV enteros con transparencia. - Xamarin_Forms _Color_FromUint_System_UInt32_" data-linktype="absolute-path">para un valor calculado como
Color.FromUintuint(B + 256 * (G + 256 * (R + 256 * A))). - Xamarin_Forms _Color_FromHex_System_String_" data-linktype="absolute-path">para un formato de dígitos hexadecimales con el formato
Color.FromHex"#AARRGGBB", "#RRGGBB" o "#ARGB" o "#RGB", donde cada letra corresponde a un dígito hexadecimal para losstringcanales alfa, rojo, verde y azul.
Una vez creado, Color un objeto es inmutable. Las características del color se pueden obtener a partir de las siguientes propiedades:
- Xamarin_Forms _Color_R" data-linktype="absolute-path">, que representa
Rel canal rojo del color. - Xamarin_Forms _Color_G" data-linktype="absolute-path">, que representa el
Gcanal verde del color. - Xamarin_Forms _Color_B" data-linktype="absolute-path">, que representa el
Bcanal azul del color. - Xamarin_Forms _Color_A" data-linktype="absolute-path">, que representa el
Acanal alfa del color. - Xamarin_Forms _Color_Hue" data-linktype="absolute-path">, que representa el
Huecanal de matiz del color. - Xamarin_Forms _Color_Saturation" data-linktype="absolute-path">, que representa el canal de
Saturationsaturación del color. - Xamarin_Forms _Color_Luminosity" data-linktype="absolute-path">, que representa el canal de
Luminosityluminosidad del color.
Estas propiedades son todos double valores que van de 0 a 1.
Colores con nombre
La Color estructura también define 240 campos públicos estáticos de solo lectura para colores comunes, como AliceBlue .
Color.Accent
El valor Xamarin_Forms _Color_Accent" data-linktype="absolute-path">da como resultado un color específico de la plataforma (y a veces seleccionable por el usuario) que es visible en un fondo oscuro o Color.Accent claro.
Color.Default
El valor Xamarin_Forms _Color_Default" data-linktype="absolute-path">define un con todos los canales establecidos en Color.Default -1 y está diseñado para aplicar la combinación de colores de la Color plataforma. Por lo tanto, tiene un significado diferente en contextos diferentes en distintas plataformas. De forma predeterminada, las combinaciones de colores de la plataforma son:
- iOS: texto oscuro sobre un fondo claro.
- Android: texto oscuro sobre un fondo claro.
- Windows: texto oscuro sobre un fondo claro.
Color.Transparent
El Color.Transparent valor define un con todos los Color canales establecidos en cero.
Modificación de un color
Varios métodos de instancia permiten modificar un color existente para crear un nuevo color:
- Xamarin_Forms _Color_AddLuminosity_System_Double_" data-linktype="absolute-path">devuelve un modificando la luminosidad por la
AddLuminosityColordiferencia proporcionada. - Xamarin_Forms _Color_MultiplyAlpha_System_Double_" data-linktype="absolute-path">devuelve un modificando el alfa, multiplicándose por el valor
MultiplyAlphaColoralfa proporcionado. ToHexdevuelve una representación hexadecimalstringdeColorun .- Xamarin_Forms _Color_WithHue_System_Double_" data-linktype="absolute-path">devuelve , reemplazando el matiz por el
WithHueColorvalor proporcionado. - Xamarin_Forms _Color_WithLuminosity_System_Double_" data-linktype="absolute-path">devuelve , reemplazando la luminosidad por el
WithLuminosityColorvalor proporcionado. - Xamarin_Forms _Color_WithSaturation_System_Double_" data-linktype="absolute-path">devuelve , reemplazando la saturación por el
WithSaturationColorvalor proporcionado.
Conversiones implícitas
Se puede realizar la Xamarin.Forms.Color conversión implícita entre los tipos y System.Drawing.Color :
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;
Ejemplos
En XAML, normalmente se hace referencia a los colores mediante sus valores con nombre o con sus representaciones hexadecimales:
<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" />
Nota:
Al usar la compilación XAML, los nombres de color no tienen en cuenta las mayúsculas y minúsculas y, por tanto, se pueden escribir en minúsculas. Para obtener más información acerca de la compilación XAML, consulte XAML Compilation (Compilación XAML).
En C#, normalmente se hace referencia a los colores mediante sus valores con nombre o con sus 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) };
En el ejemplo siguiente se usa OnPlatform la extensión de marcado para establecer selectivamente el color de ActivityIndicator :
<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
IsRunning="True" />
El código de C# equivalente es el siguiente:
ActivityIndicator activityIndicator = new ActivityIndicator
{
Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
IsRunning = true
};
Descarga del ejemplo