Настройка цветов ленты

Платформа ленты Windows предоставляет набор свойств цвета, которые позволяют приложению настраивать внешний вид различных элементов пользовательского интерфейса ленты во время выполнения.

Введение

Ключи свойств платформы, перечисленные в следующей таблице, используются для задания цвета различных элементов пользовательского интерфейса в приложении ленты. Эти свойства позволяют платформе ленты поддерживать персонализацию, требования к удостоверениям и спецификации фирменной символики в разных приложениях.

Цвет ленты Ключ свойства платформы
Цвет фона UI_PKEY_GlobalBackgroundColor
Цвет выделения (только Windows 7) ** UI_PKEY_GlobalHighlightColor Появилось в Windows 8: ** UI_PKEY_GlobalHighlightColor нельзя задать независимо от UI_PKEY_GlobalBackgroundColor.

Цвет текста UI_PKEY_GlobalTextColorв Windows 8. Изменение значения по умолчанию UI_PKEY_GlobalBackgroundColor в Windows 8 может потребовать корректировки UI_PKEY_GlobalTextColor в ленточных приложениях, предназначенных для Windows 7.

Указание цветов ленты

Платформа ленты использует цветовую модель оттенка, насыщенности, яркости (HSB), которая отличается от более распространенных цветовых пространств оттенка, насыщенности, яркости (HSL) или оттенка, насыщенности, значения (HSV). В частности, B представляет собой общий уровень яркости или яркости, а не легкость конкретного цвета.

Чтобы указать цвет элементов пользовательского интерфейса на платформе ленты, приложение присваивает значения HSB каждому из глобальных свойств цвета. Затем эти значения применяются универсально ко всем элементам ленты в соответствии с требованиями приложения ленты (платформа не поддерживает назначение значений HSB отдельным элементам и элементам управления).

**Появилось в Windows 8: **UI_PKEY_GlobalHighlightColor присваивается то же значение, что и UI_PKEY_GlobalBackgroundColor.

В следующей таблице описаны параметры HSB платформы ленты.

Компонент

Описание

Скорректированные значения*

Hue (H)

Пигмент, или фактический, цвет обычно определяется как значение из круговых диапазонов от 0 до 359 градусов.

От 0 (красный) до 255 (красный)

Насыщенность (S)

Чистота или насыщенность цвета, измеряемая в процентах от 0 до 100 %.

От 0 (серый) до 255 (полностью насыщенный)

Яркость (B)

Общая яркость или темнота цвета измеряется в процентах от 0 до 100 %.

от 0 (темный) до 255 (светлый)

* Исходный диапазон для каждого значения параметра преобразуется в диапазон от 0 до 255 для платформы.

Значения HSB не идентифицируют определенные цвета. Вместо этого сочетание значений свойств HSB влияет на настройку цветовых градиентов в пользовательском интерфейсе относительно друг друга.

При назначении пользовательских значений HSB UI_PKEY_GlobalTextColor и UI_PKEY_GlobalBackgroundColor рекомендуется, чтобы эти значения были достаточно высокой контрастностью, чтобы обеспечить удобочитаемость. В частности, цвет текста должен быть темнее, чем самый светлый оттенок пользовательского интерфейса ленты. При необходимости платформа автоматически корректирует значение UI_PKEY_GlobalTextColor HSB, чтобы обеспечить достаточную контрастность с любым фоновым оттенком или градиентом, производным от UI_PKEY_GlobalBackgroundColor.

Примечание

В Windows 7 UI_PKEY_GlobalHighlightColor можно задать независимо от UI_PKEY_GlobalBackgroundColor.

В следующем примере показано, как указать пользовательский цвет для свойств UI_PKEY_GlobalTextColor, UI_PKEY_GlobalBackgroundColor и UI_PKEY_GlobalHighlightColor .

CComPtr<IPropertyStore> spPropertyStore;

// _spFramework is a pointer to the IUIFramework interface that is assigned 
// when the Ribbon is initialized.
if (SUCCEEDED(_spFramework->QueryInterface(&spPropertyStore)))
{
  PROPVARIANT propvarBackground;
  PROPVARIANT propvarHighlight;
  PROPVARIANT propvarText;
 
  // UI_HSBCOLOR is a type defined in UIRibbon.h that is composed of 
  // three component values: hue, saturation and brightness, respectively.
  UI_HSBCOLOR BackgroundColor = UI_HSB(0x14, 0x38, 0x54);
  UI_HSBCOLOR HighlightColor = UI_HSB(0x00, 0x36, 0x87);
  UI_HSBCOLOR TextColor = UI_HSB(0x2B, 0xD6, 0x00);

  InitPropVariantFromUInt32(BackgroundColor, &propvarBackground);
  InitPropVariantFromUInt32(HighlightColor, &propvarHighlight);
  InitPropVariantFromUInt32(TextColor, &propvarText);
 
  spPropertyStore->SetValue(UI_PKEY_GlobalBackgroundColor, propvarBackground);
  spPropertyStore->SetValue(UI_PKEY_GlobalTextColor, propvarText);
 
  spPropertyStore->Commit();
}

Преобразование RGB в HSB

В этом разделе описывается формула, необходимая для динамического сопоставления значения HSB платформы ленты, UI_PKEY_GlobalBackgroundColor в этом примере, с определенным цветом RGB во время выполнения.

Фон строки табуляции используется в качестве опорной точки, так как он отображается как плоская цветовая поверхность по сравнению с градиентом яркости фона ленты.

Для получения промежуточного значения HSL необходимо предварительное преобразование. Затем это значение HSL можно преобразовать в значение HSB.

Примечание

Преобразование из RGB в HSL легко выполняется с помощью большинства программ для редактирования фотографий.

Преобразование HSL (с каждым компонентом в диапазоне от 0,0 до 1,0) в параметр HSB ленты выполняется с помощью следующих формул:

  • Фон H = Round(255.0 H)
  • Фон S = Round(255.0 S)
  • Bbackground = Round(257,7 + 149,9 ln(L)), если 0,1793 <= L <= 0,9821

Рекомендации по цвету

Свойства платформы