Share via


自訂功能區色彩

Windows 功能區架構會公開一組色彩屬性,可讓應用程式在執行時間自訂各種功能區 UI 元素的外觀。

簡介

下表所列的 架構屬性索引鍵 是用來設定功能區應用程式中各種 UI 元素的色彩。 這些屬性可讓功能區架構支援跨應用程式的個人化、身分識別需求和商標規格。

功能區色彩 Framework 屬性索引鍵
背景色彩 UI_PKEY_GlobalBackgroundColor
僅醒目提示 Windows 7 (色彩) ** UI_PKEY_GlobalHighlightColorWindows 8中引進:** UI_PKEY_GlobalHighlightColor不能與UI_PKEY_GlobalBackgroundColor分開設定。

文字色彩 Windows 8中引進的UI_PKEY_GlobalTextColor:Windows 8中UI_PKEY_GlobalBackgroundColor預設值的變更可能需要調整,才能在專為 Windows 7 設計的功能區應用程式中UI_PKEY_GlobalTextColor

指定功能區色彩

功能區架構使用 Hue、飽和度、亮度 (HSB) 色彩模型,與較常見的色調、飽和度、亮度 (HSL) 或色調、飽和度、值 (HSV) 色彩空間不同。 特別是,B 代表整體亮度或亮度等級,而不是特定色彩的亮度。

若要在功能區架構中指定 UI 元素的色彩,應用程式會將 HSB 值指派給每個全域色彩屬性。 然後,這些值會套用到功能區應用程式所需的所有功能區元素, (架構不支援將 HSB 值指派給個別元素和控制項) 。

**Windows 8中引進:**UI_PKEY_GlobalHighlightColor指派與UI_PKEY_GlobalBackgroundColor相同的值。

下表描述功能區架構 HSB 參數。

元件

Description

調整的值*

Hue (H)

從 0 到 359 度的 circlular 範圍,通常會識別出色彩或實際色彩。

0 (紅色) 到 255 (紅色)

飽和度 (S)

以 0 到 100% 百分比測量之色彩的濃度或飽和度。

0 (灰色) 到 255 (完全飽和)

亮度 (B)

以 0 到 100% 百分比測量之色彩的整體亮度或暗度。

0 (深色) 到 255 (淺色)

* 每個參數值的原始範圍會轉譯為架構的 0 到 255 範圍。

HSB 值不會識別特定色彩。 相反地,HSB 屬性值的組合會影響整個 UI 的色彩漸層如何彼此相對調整。

將自訂 HSB 值指派給 UI_PKEY_GlobalTextColorUI_PKEY_GlobalBackgroundColor時,建議這些值具有足夠的對比,以確保可讀性。 具體而言,文字色彩應該比功能區 UI 最淺的陰影更深。 如有必要,架構會自動調整UI_PKEY_GlobalTextColor HSB 值,針對衍生自 UI_PKEY_GlobalBackgroundColor 的任何背景陰影或漸層提供足夠的對比。

注意

在 Windows 7 中, UI_PKEY_GlobalHighlightColor 可以獨立設定 UI_PKEY_GlobalBackgroundColor

下列範例示範如何指定 UI_PKEY_GlobalTextColorUI_PKEY_GlobalBackgroundColorUI_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 設定,可透過下列公式來完成:

  • Hbackground = Round (255.0 H)
  • Sbackground = Round (255.0 S)
  • Bbackground = Round (257.7 + 149.9 ln (L) ) if 0.1793 < = L < = 0.9821

色彩指導方針

Framework 屬性