Настройка цветов ленты
Платформа ленты 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