Поделиться через


Color Структура

Определение

Описывает цвет в терминах каналов альфа, красного, зеленого и синего.

public value class Color
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Color
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Color
var color = {
a : /* Your value */,
r : /* Your value */,
g : /* Your value */,
b : /* Your value */
}
Public Structure Color
<Color ...>predefinedColor</Color>
- or -
<Color ...>#rgb</Color>
- or -
<Color ...>#argb</Color>
- or -
<Color ...>#rrggbb</Color>
- or -
<Color ...>#aarrggbb</Color>
- or -
<Color ...>sc#scR,scG,scB</Color>
- or -
<Color ...>sc#scA,scR,scG,scB</Color>
- or -
<object property="predefinedColor"/>
- or -
<object property="#rgb"/>
- or -
<object property="#argb"/>
- or -
<object property="#rrggbb"/>
- or -
<object property="#aarrggbb"/>
- or -
<object property="sc#scR,scG,scB"/>
- or -
<object property="sc#scA,scR,scG,scB"/>
Наследование
Color
Атрибуты

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

Ниже приведен синтаксис для определения значения Color в качестве ресурса в XAML ResourceDictionary. Обычно это требуется только в том случае, если вы определяете цвет, который еще не является одним из более чем 250 цветов, предоставленных в качестве значений в классе Colors , и вы хотите использовать систему ресурсов XAML в качестве принудительного применения одного и того же цвета в нескольких областях пользовательского интерфейса приложения. Обратите внимание на атрибут x:Key, необходимый при определении ресурса XAML.

<Application.Resources>
  ...
  <Color x:Key="SlightlyOffBlue">#FF0000E8</Color>
</Application.Resources>
<!-- example reference to the resource, make sure is a property that is really Color not Brush-->
      <ColorAnimation Storyboard.TargetName="mySolidColorBrush"
        Storyboard.TargetProperty="Color" To="{StaticResource SlightlyOffBlue}" Duration="0:0:4"/>

В этом коде показан двусторонний преобразователь для значений SolidColorBrush и Color. Это может быть полезно для сценариев привязки данных, так как он реализует шаблон IValueConverter , который может использовать свойство Converter привязки данных, а затем можно привязать источник SolidColorBrush к целевому объекту Color и наоборот. Чтобы увидеть этот код в контексте, см. источник для примера SwapChainPanel.

class BrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return new SolidColorBrush((value is Color) ? (Color)value : Colors.Black);
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return (value is SolidColorBrush) ? (value as SolidColorBrush).Color : Colors.Black;
    }
}

Комментарии

Цвет — это среда выполнения Windows структура, представляющая цвет с четырьмя каналами: A (альфа), R (красный), G (зеленый), B (синий). Каждое из значений хранится как байтовый тип со значением от 0 до 255.

Значения цвета используются в следующих функциях и сценариях:

  • Цвета для начальных экранов и общего пользовательского интерфейса (например , SecondaryTile.BackgroundColor и UISettings.UIElementColor). Их можно использовать в JavaScript.
  • Значения цвета для системы рукописного ввода Windows 8. В частности, InkDrawingAttributes.Color. Его можно использовать в JavaScript.
  • Значения цвета для пользовательского интерфейса XAML и приложения UWP с использованием C++, C# или Visual Basic, особенно для кистей. Эти API нельзя использовать в JavaScript.
  • Определение значений цветов, используемых для интерфейсов, представляющих текст, в пространстве имен Windows.UI.Text . Эти API нельзя использовать в JavaScript.

Значения цвета и определения XAML

Чаще всего color применяется для определения свойств, связанных с цветом, в элементе пользовательского интерфейса в составе приложения UWP с помощью C++, C# или Visual Basic и определения пользовательского интерфейса XAML.

Различные предопределенные значения Color доступны в виде статических свойств в классе Colors . Эти свойства полезны для задания значений Color в коде, которые соответствуют строковой форме атрибута, используемой в XAML для задания именованного Color. Например, свойство Colors.AliceBlue возвращает значение Color, равное Color из использования <SolidColorBrush Color="AliceBlue" />XAML. Значения Colors также можно использовать для сравнения на равенство с цветом.

В большинстве сценариев пользовательского интерфейса XAML Color не используется напрямую в качестве значения свойства ЭЛЕМЕНТА UIElement. Вместо этого color используется в качестве значения компонента кисти ( SolidColorBrush или LinearGradientBrush). Однако тип Brush включает сокращение XAML, позволяющее задать значение атрибута типа Brush с помощью именованной строки цвета или строки формата, которую можно проанализировать в форме ARGB . Например, можно задать значение Типа кистиTextBlock.Foreground с помощью синтаксиса, такого как <TextBlock Foreground="Cyan" />. Этот синтаксис неявно создает объект SolidColorBrush со значением Color, равным Cyan , который заполняет значение Типа Brushдля TextBlock.Foreground для этого элемента. Дополнительные сведения об использовании кистей и цветов в XAML см. в статье Использование кистей.

Если вы часто используете одну и ту же цветную кисть в XAML, следует определить SolidColorBrush в качестве ресурса, а не использовать встроенное неявное создание новых значений, так как это более эффективно. Дополнительные сведения см. в статье Оптимизация разметки XAML или Ссылок на ресурсы ResourceDictionary и XAML. Кроме того, может потребоваться использовать системные цвета, доступ к которым можно получить как объединенные ресурсы для тем, определяемых системой. См. статью Ресурсы темы XAML.

Существуют также некоторые свойства XAML, которые принимают прямое значение Color. Они в основном поддерживают анимацию значения Color, существующего в кисти. Среда выполнения Windows поддерживает логику интерполяции, чтобы вы могли анимировать один цвет к другому в анимации From/To, и анимация будет использовать интерполированные значения Color при выполнении анимации. Подробнее: Раскадрованные анимации.

Примечания по синтаксису XAML

При использовании маркера "#" для указания значений цвета в шестнадцатеричной форме шестнадцатеричные значения сохраняются в структуре в виде значений от 0 до 255, а не в виде исходных шестнадцатеричных строк. Если вы используете токен sc#, значения также сохраняются как значения от 0 до 255, а не как исходное значение от 0 до 1.

Строки для именованных цветов интерпретируются на основе связанных констант Colors , а значения для A, R, G и B задаются в структуре как значения от 0 до 255, которые являются репрезентативными для этого цвета.

Использование объектного элемента XAML (с текстом инициализации) полезно для объявления Color в качестве ресурса в XAML ResourceDictionary. Подробнее: ResourceDictionary и ссылки на ресурсы XAML.

В этой таблице описаны заполнители значений цвета, показанные в разделе Синтаксис XAML.

Значение Примечания
predefinedColor Один из цветов, предопределенных классом Colors . Список см. в разделе Colors члены . Это статические свойства. Укажите только имя цвета, например Transparent. Не включайте статический квалификатор класса в строку. Например, "Colors.Transparent" не анализируется в XAML.
<Grid Background="Blue"/>, <Color>Blue</Color>
Rgb Шестнадцатеричное значение из трех символов. Первый символ указывает значение R цвета, второй — значение G, а третий — значение B. Например, 00F.
<Grid Background="#00F"/>, <Color>#00F</Color>
Argb Шестнадцатеричное значение из четырех символов. Первый символ задает значение A цвета, второй — значение R, третий — значение G, а четвертый — значение B. Например, F00F.
<Grid Background="#F00F"/>, <Color>#F00F</Color>
rrggbb Шестнадцатеричное значение из шести символов. Первые два символа указывают значение R цвета, следующие два — значение G, а последние два — значение B. Например, 0000FF.
<Grid Background="#0000FF"/>, <Color>#0000FF</Color>
aarrggbb Шестнадцатеричное значение из восьми символов. Первые два символа указывают значение A цвета, следующие два — значение R, следующие два — значение G, а последние два — значение B. Например, FF0000FF.
<Grid Background="#FF0000FF"/>, <Color>#FF0000FF</Color>
Sca Значение ScA (альфа) цвета в виде значения от 0 до 1.
<Grid Background="sc#1,0,0,1"/>, <Color>sc#1,0,0,1</Color>
Scr Значение ScR цвета (красный) в виде значения от 0 до 1.
Scg Значение ScG цвета (зеленый) в виде значения от 0 до 1.
Scb Значение ScB (синий) цвета в виде значения от 0 до 1.

Проекция и элементы Color

Если вы используете язык Microsoft .NET (C# или Microsoft Visual Basic), color имеет статический метод FromArgb , который выступает в качестве генератора значений Color. Кроме того, элементы данных Color предоставляются как свойства чтения и записи.

Если вы программируете с помощью C++, расширений компонентов Visual C++ (C++/CX) или WRL, то в качестве элементов Color существуют только поля элементов данных, и вы не сможете использовать служебные методы или свойства, перечисленные в таблице элементов. Код C++ может использовать эквивалентный метод FromArgb в классе ColorHelper и методах Platform::Object .

Поведение ToString для Color

Для C# и Microsoft Visual Basic языковая поддержка структуры Color обеспечивает поведение ToString , которое сериализует значения свойств данных ARGB в одну строку. Строковые представления значений Color похожи на синтаксис строки атрибута XAML для указания значений Color в разметке. Это синтаксис, который чаще всего используется средствами конструктора для указания цвета (без имени). Строка имеет вид #AARRGGBB, где каждая пара букв представляет один из цветовых каналов в виде значения между 00 и FF. Каждая пара букв интерпретируется как шестнадцатеричное значение и, таким образом, представляет значение от 0 до 255. Строка всегда начинается с хэша (#). Например, строковая форма цвета , где A=255, R=0, G=128, B=255 имеет значение "#FF0080FF". Для именованных цветов вы получаете сериализованную строку, а не имя константы; например, вызов ToStringв Colors.Blue дает "#FF0000FF".

Примечание

Расширения компонентов Visual C++ (C++/CX) не используют элементы Color без данных и не поддерживают эту форму строки, возвращаемой из ToString(). Значение ToString() , возвращаемое расширениями компонентов Visual C++ (C++/CX) для Параметра Color, является неизмененным поведением Platform::Object::ToString , которое дает представление типа (упаковав по IReference) и не указывает значение.

Поля

A

Возвращает или задает значение альфа-канала sRGB цвета.

B

Возвращает или задает значение синего канала sRGB цвета.

G

Возвращает или задает значение зеленого канала sRGB цвета.

R

Возвращает или задает значение красного канала sRGB цвета.

Применяется к

См. также раздел