Anpassen von Menübandfarben

Das Windows-Menübandframework macht eine Reihe von Farbeigenschaften verfügbar, mit denen eine Anwendung die Darstellung verschiedener Menüband-UI-Elemente zur Laufzeit anpassen kann.

Einführung

Die in der folgenden Tabelle aufgeführten Framework-Eigenschaftenschlüssel werden verwendet, um die Farbe verschiedener Ui-Elemente in einer Menübandanwendung festzulegen. Diese Eigenschaften ermöglichen es dem Menübandframework, Personalisierung, Identitätsanforderungen und Brandingspezifikationen anwendungsübergreifend zu unterstützen.

Menübandfarbe Framework-Eigenschaftsschlüssel
Hintergrundfarbe UI_PKEY_GlobalBackgroundColor
Hervorheben der Farbe (nur Windows 7) ** UI_PKEY_GlobalHighlightColor Eingeführt in Windows 8: ** UI_PKEY_GlobalHighlightColor können nicht unabhängig von UI_PKEY_GlobalBackgroundColor festgelegt werden.

Textfarbe UI_PKEY_GlobalTextColorIn Windows 8 eingeführt: Änderungen am Standardwert von UI_PKEY_GlobalBackgroundColor in Windows 8 erfordern möglicherweise eine Anpassung der UI_PKEY_GlobalTextColor in Menüband-Apps, die für Windows 7 entwickelt wurden.

Angeben von Menübandfarben

Das Menübandframework verwendet ein HSB-Farbmodell (Hue, Saturation, Brightness), das sich von den gängigeren Farbräumen Farbton, Sättigung, Leuchtkraft (HSL) oder Farbton, Sättigung, Wert (HSV) unterscheidet. Insbesondere stellt B eine Gesamthelligkeit oder Helligkeitsstufe dar und nicht die Helligkeit einer bestimmten Farbe.

Um die Farbe von UI-Elementen im Menübandframework anzugeben, weist eine Anwendung jeder der globalen Farbeigenschaften HSB-Werte zu. Diese Werte werden dann universell auf alle Menübandelemente angewendet, wie für die Menübandanwendung erforderlich (das Framework unterstützt das Zuweisen von HSB-Werten zu einzelnen Elementen und Steuerelementen nicht).

** Eingeführt in Windows 8: **UI_PKEY_GlobalHighlightColor wird demselben Wert wie UI_PKEY_GlobalBackgroundColor zugewiesen.

In der folgenden Tabelle werden die HSB-Parameter des Menübandframeworks beschrieben.

Komponente

BESCHREIBUNG

Angepasste Werte*

Farbton (H)

Das Pigment oder die tatsächliche Farbe wird in der Regel als Wert aus einem kreisförmigen Bereich von 0 bis 359 Grad identifiziert.

0 (rot) bis 255 (rot)

Sättigung (S)

Die Reinheit oder Sättigung der Farbe, gemessen als Prozentsatz von 0 bis 100 %.

0 (grau) bis 255 (vollständig gesättigt)

Helligkeit (B)

Die Gesamthelligkeit oder Dunkelheit der Farbe, gemessen als Prozentsatz von 0 bis 100 %.

0 (dunkel) bis 255 (hell)

* Der ursprüngliche Bereich für jeden Parameterwert wird für das Framework in einen Bereich von 0 bis 255 übersetzt.

HSB-Werte identifizieren keine bestimmten Farben. Stattdessen beeinflusst die Kombination von HSB-Eigenschaftswerten, wie Farbverläufe auf der gesamten Benutzeroberfläche relativ zueinander angepasst werden.

Beim Zuweisen benutzerdefinierter HSB-Werte zu UI_PKEY_GlobalTextColor und UI_PKEY_GlobalBackgroundColor wird empfohlen, dass diese Werte einen ausreichend hohen Kontrast aufweisen, um die Lesbarkeit sicherzustellen. Insbesondere sollte die Textfarbe dunkler sein als der hellste Farbton der Menüband-Benutzeroberfläche. Bei Bedarf passt das Framework den UI_PKEY_GlobalTextColor HSB-Wert automatisch an, um einen ausreichenden Kontrast zu allen Hintergrundschatten oder Farbverlaufen zu bieten, die von UI_PKEY_GlobalBackgroundColor abgeleitet werden.

Hinweis

In Windows 7 können UI_PKEY_GlobalHighlightColor unabhängig von UI_PKEY_GlobalBackgroundColor festgelegt werden.

Im folgenden Beispiel wird veranschaulicht, wie eine benutzerdefinierte Farbe für die Eigenschaften UI_PKEY_GlobalTextColor, UI_PKEY_GlobalBackgroundColor und UI_PKEY_GlobalHighlightColor angegeben wird .

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();
}

Konvertieren von RGB in HSB

In diesem Abschnitt wird die Formel beschrieben, die zum dynamischen Abgleichen eines HSB-Werts des Menübandframeworks erforderlich ist, der in diesem Beispiel UI_PKEY_GlobalBackgroundColor , mit einer bestimmten RGB-Farbe zur Laufzeit.

Der Hintergrund der Registerkartenzeile wird als Bezugspunkt verwendet, da er im Vergleich zum Helligkeitsverlauf des Menübandhintergrunds als flache Farboberfläche gerendert wird.

Eine vorläufige Konvertierung ist erforderlich, um einen HSL-Zwischenwert zu erhalten. Dieser HSL-Wert kann dann in einen HSB-Wert konvertiert werden.

Hinweis

Die Konvertierung von RGB zu HSL ist mit den meisten Fotobearbeitungssoftware einfach zu erreichen.

Die Konvertierung von HSL (mit jeder Komponente im Bereich von 0,0 bis 1,0) in eine Menüband-HSB-Einstellung erfolgt mithilfe der folgenden Formeln:

  • H-Hintergrund = Rund(255,0 H)
  • SBackground = Round(255.0 S)
  • BHintergrund = Rund(257,7 + 149,9 ln(L)), wenn 0,1793 <= L <= 0,9821

Farbrichtlinien

Framework-Eigenschaften