Работа с цветом

Последнее обновление: 10.07.2022

За установку цвета фона и текста элементов отвечают свойства 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.

Установка цвета в .NET MAUI и C#

Или в 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);
BackgtoundColor и TextColor в .NET MAUI и C#

Также для установки цвета мы можем использовать ряд статических методов:

  • 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;
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850