За установку цвета фона и текста элементов отвечают свойства BackgroundColor и TextColor соответственно. В качестве значение они принимают объект класса Microsoft.Maui.Graphics.Color:
namespace HelloApp { class StartPage : ContentPage { public StartPage() { Label header = new Label() { Text = "Hello METANIT.COM" }; header.HorizontalTextAlignment = TextAlignment.Center; header.VerticalTextAlignment = TextAlignment.Center; header.BackgroundColor = Colors.LightBlue; // фоновый цвет header.TextColor = Colors.DarkBlue; // цвет текста Content = header; } } }
В данном случае для определения цвета применялись встроенные готовые цвета из статического класса Colors.
Или в XAML:
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="HelloApp.MainPage"> <Label Text="Hello METANIT.COM" VerticalOptions="Center" HorizontalOptions="Center" BackgroundColor="LightBlue" TextColor="DarkBlue" /> </ContentPage>
Кроме встроенных готовых цветов типа Colors.DarkBlue
(так называемых именнованных цветов) также для установки цвета мы можем указать и другие значения, можно использовать один из конструкторов класса Color.
Некоторые из них:
new Color(float grayShade)
: устанавливает тон серого цвета
new Color(float r, float g, float b)
: устанавливает компоненты красного, зеленого и синего. Каждая компонента должна иметь значения в диапазоне от 0.0 до 1.0
new Color(byte r, byte g, byte b)
: устанавливает компоненты красного, зеленого и синего. Каждая компонента должна иметь значения в диапазоне от 0 до 255
new Color(float r, float g, float b, float a)
: добавляет еще один параметр - a
, который передает прозрачность
и имеет значение от 0.0 (полностью прозрачный) до 1.0 (не прозрачный)
new Color(byte r, byte g, byte b, byte a)
: устанавливает компоненты красного, зеленого, синего и прозрачности
Использование конструктора:
Label header = new Label() { Text = "Hello METANIT.COM" }; header.BackgroundColor = new Color(178, 223, 219); header.TextColor = new Color(0, 77, 64);
Также для установки цвета мы можем использовать ряд статических методов:
Color.FromArgb(string hex): возвращает объект Color, созданный по переданному в качестве параметра шестнадцатеричному значению. В качестве значения в метод передается строка в формате "#AARRGGBB", "#RRGGBB", "#ARGB" или "RGB", где A - показатель прозрачности, R - значение для красного цвета, G - значение для зеленого компонента и B - представляет синий цвет
Color.FromRgb(double r, double g, double b): возвращает объект Color, для которого также устанавливаются компоненты красного, зеленого и синего
Color.FromRgb(int r, int g, int b): аналогичен предыдущей версии метода, только теперь компоненты красного, зеленого и синего имеют целочисленные значения от 0 до 255
Color.FromRgba(double r, double g, double b, double a): добавляет параметр прозрачности со значением от 0.0 (полностью прозрачный) до 1.0 (не прозрачный)
Color.FromRgba(int r, int g, int b, int a): добавляет параметр прозрачности со значением от 0 (полностью прозрачный) до 255 (не прозрачный)
Color.FromHsla(double h, double s, double l, double a): устанавливает последовательно параметры h
(hue - тон цвета), s
(saturation -
насыщенность), l
(luminosity - яркость) и прозрачность.
Например:
Label header = new Label() { Text = "Hello METANIT.COM" }; header.BackgroundColor = Color.FromArgb("#B2DFDB"); header.TextColor = Color.FromArgb("#aa004D40");
В xaml мы можем задавать цвет с помощью шестнадцатеричных значений также, как в HTML/CSS:
<Label Text="Hello METANIT.COM" BackgroundColor="#B2DFDB" TextColor="#aa004D40" />
Стоит отметить, что у класса Color определено ряд дополнительных методов, которые позволяют управлять цветом. В частности, ряд методов позволяются выполнять преобразования
ToHex: возвращает шестнадцатеричное значение текущего цвета в виде строки.
ToArgbHex: возвращает шестнадцатеричное значение текущего цвета в виде строки в формате ARGB
ToRgbaHex: возвращает шестнадцатеричное значение текущего цвета в виде строки в формате RGBA
ToInt: возвращает числовое ARGB-представление текущего цвета в виде значения int
ToUint: возвращает числовое ARGB-представление текущего цвета в виде значения uint
ToRgb: преобразует текущей цвет в отдельные компоненты RGB типа byte
ToRgba: преобразует текущей цвет в отдельные компоненты RGBA типа byte
ToHsl: преобразует текущей цвет в отдельные компоненты HSL типа float
Кроме того, у класса Color есть ряд дополнительных методов для управления отдельными аспектами цвета
AddLuminosity: добавляет цвету яркость
MultiplyAlpha: умножает альфа-компоненту (прозрачность) цвета на переданное значение типа float
WithAlpha: заменяет альфа-компоненту цвета
WithHue: заменяет тон цвета
WithLuminosity: заменяет яркость цвета
WithSaturation: заменяет насыщенность цвета
Применение некоторых методов:
Label header = new Label() { Text = "Hello METANIT.COM" }; Color customColor = Colors.Teal; customColor = customColor.WithAlpha(0.5f); customColor = customColor.WithHue(0.5f); customColor = customColor.WithLuminosity(0.9f); header.BackgroundColor = customColor;