Цвета в Xamarin.Forms
Структура Color
позволяет указать цвета в виде значений Red-Green-Blue (RGB), Hue-Saturation-Luminosity (HSL), Hue-Saturation-Value (HSV) или с именем цвета. Для обозначения прозрачности также доступен альфа-канал.
Color
Объекты можно создавать с Color
помощью конструкторов, которые можно использовать для указания серого оттенка, значения RGB или RGB-значения с прозрачностью. Во всех случаях аргументы — это double
значения от 0 до 1.
Для создания Color
объектов можно также использовать статические методы:
Color.FromRgb
дляdouble
значений RGB от 0 до 1.Color.FromRgb
для целых значений RGB от 0 до 255.Color.FromRgba
дляdouble
значений RGB с прозрачностью.Color.FromRgba
для целых значений RGB с прозрачностью.Color.FromHsla
дляdouble
значений HSL с прозрачностью.Color.FromHsv
дляdouble
значений HSV от 0 до 1.Color.FromHsv
для целочисленных значений HSV от 0 до 255.Color.FromHsva
дляdouble
значений HSV с прозрачностью.Color.FromHsva
для целочисленных значений HSV с прозрачностью.Color.FromUint
uint
значение, вычисляемое как (B + 256 * (G + 256 * (R + 256 * A)).Color.FromHex
для значенийstring
в формате шестнадцатеричных цифр ("#AARRGGBB", "#RRGGBB", "#ARGB" или "#RGB"), где каждая буква соответствует шестнадцатеричной цифре для каналов альфа, красного, зеленого и синего.
После создания Color
объект неизменяем. Характеристики цвета можно получить из следующих свойств:
R
, представляющий красный канал цвета.G
, представляющий зеленый канал цвета.B
, представляющий синий канал цвета.A
, представляющий альфа-канал цвета.Hue
, представляющий канал оттенка цвета.Saturation
, представляющий канал насыщенности цвета.Luminosity
, представляющий канал светимости цвета.
Эти свойства — это все double
значения, от 0 до 1.
Именованные цвета
Структура Color
также определяет 240 общедоступных статических полей только для чтения для общих цветов, таких как AliceBlue
.
Color.Accent
Значение Color.Accent
использует цвет, определяемый платформой (либо пользователем), который отображается на темном или светлом фоне.
Color.Default
Значение Color.Default
определяет значение со всеми каналами Color
, равными -1, и предназначено для применения цветовой схемы платформы. Следовательно, он имеет другое значение в разных контекстах на разных платформах. По умолчанию на платформах применяются следующие цветовые схемы:
- iOS: темный текст на светлом фоне.
- Android: темный текст на светлом фоне.
- Windows: темный текст на светлом фоне.
Color.Transparent
Значение Color.Transparent
определяет значение со всеми каналами Color
, равными нулю.
Изменение цвета
Несколько методов экземпляра позволяют изменять существующий цвет, чтобы получить новый цвет.
AddLuminosity
Color
возвращает значение, изменяя светимость заданным разностным.MultiplyAlpha
возвращает значениеColor
, изменяя альфа- и умножая его на указанное альфа-значение.ToHex
возвращает шестнадцатеричноеstring
представление .Color
WithHue
Color
возвращает значение, заменяющее оттенок указанным значением.WithLuminosity
Color
возвращает значение, заменяющее светимость указанным значением.WithSaturation
Color
возвращает значение, заменяющее насыщенность указанным значением.
Неявные преобразования
Неявное преобразование между Xamarin.Forms.Color
типами 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;
Примеры
В XAML цвета обычно ссылаются с помощью именованных значений или шестнадцатеричных представлений:
<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" />
Примечание.
При компиляции XAML имена цветов не учитывает регистр, поэтому их можно записать в нижнем регистре. Дополнительные сведения о компиляции XAML см. в статье Компиляция XAML.
В C#цвета обычно ссылаются с помощью именованных значений или со статическими методами:
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) };
В следующем примере используется OnPlatform
расширение разметки для выборочного задания цвета ActivityIndicator
:
<ActivityIndicator Color="{OnPlatform iOS=Black, Default=Default}"
IsRunning="True" />
Эквивалентный код на C# выглядит так:
ActivityIndicator activityIndicator = new ActivityIndicator
{
Color = Device.RuntimePlatform == Device.iOS ? Color.Black : Color.Default,
IsRunning = true
};