Personnalisation des couleurs du ruban
L’infrastructure du ruban Windows expose un ensemble de propriétés de couleur qui permettent à une application de personnaliser l’apparence de différents éléments de l’interface utilisateur du ruban au moment de l’exécution.
Introduction
Les clés de propriété d’infrastructure répertoriées dans le tableau suivant sont utilisées pour définir la couleur de différents éléments d’interface utilisateur dans une application Ruban. Ces propriétés permettent à l’infrastructure du ruban de prendre en charge la personnalisation, les exigences d’identité et les spécifications de personnalisation entre les applications.
Couleur du ruban | Clé de propriété framework |
---|---|
Couleur d'arrière-plan | UI_PKEY_GlobalBackgroundColor |
Couleur de surbrillance (Windows 7 uniquement) |
** UI_PKEY_GlobalHighlightColor Introduit dans Windows 8 : ** UI_PKEY_GlobalHighlightColor ne peut pas être défini indépendamment de UI_PKEY_GlobalBackgroundColor. |
Couleur du texte |
UI_PKEY_GlobalTextColorIntroduit dans Windows 8 : les modifications apportées à la valeur par défaut de UI_PKEY_GlobalBackgroundColor dans Windows 8 peuvent nécessiter un ajustement de UI_PKEY_GlobalTextColor dans les applications ruban conçues pour Windows 7. |
Spécifier les couleurs du ruban
L’infrastructure du ruban utilise un modèle de couleur Hue, Saturation, Brightness (HSB), qui diffère des espaces de couleur hue, saturation, luminosité (HSL) ou hue, saturation, value (HSV) plus courants. En particulier, B représente un niveau de luminosité ou de luminosité global plutôt que la luminosité d’une couleur particulière.
Pour spécifier la couleur des éléments d’interface utilisateur dans l’infrastructure du ruban, une application affecte des valeurs HSB à chacune des propriétés de couleur globales. Ces valeurs sont ensuite appliquées de manière universelle à tous les éléments du ruban, comme requis par l’application ruban (l’infrastructure ne prend pas en charge l’affectation de valeurs HSB à des éléments et contrôles individuels).
** Introduit dans Windows 8 : **UI_PKEY_GlobalHighlightColor se voit attribuer la même valeur que UI_PKEY_GlobalBackgroundColor.
Le tableau suivant décrit les paramètres HSB de l’infrastructure du ruban.
Composant
Description
Valeurs ajustées*
Hue (H)
Le pigment, ou couleur réelle, est généralement identifié comme une valeur d’une plage circlulaire de 0 à 359 degrés.
0 (rouge) à 255 (rouge)
Saturation (S)
La pureté, ou saturation, de la couleur mesurée en pourcentage de 0 à 100 %.
0 (gris) à 255 (entièrement saturé)
Luminosité (B)
La luminosité globale ou l’obscurité de la couleur mesurée en pourcentage de 0 à 100 %.
0 (sombre) à 255 (clair)
* La plage d’origine pour chaque valeur de paramètre est convertie en une plage comprise entre 0 et 255 pour l’infrastructure.
Les valeurs HSB n’identifient pas de couleurs spécifiques. Au lieu de cela, la combinaison de valeurs de propriété HSB influence la façon dont les dégradés de couleurs dans l’interface utilisateur sont ajustés les uns par rapport aux autres.
Lors de l’affectation de valeurs HSB personnalisées à UI_PKEY_GlobalTextColor et UI_PKEY_GlobalBackgroundColor, il est recommandé que ces valeurs soient suffisamment contrastées pour garantir la lisibilité. Plus précisément, la couleur du texte doit être plus foncée que la nuance la plus claire de l’interface utilisateur du ruban. Si nécessaire, l’infrastructure ajuste automatiquement la valeur HSB UI_PKEY_GlobalTextColor pour fournir un contraste suffisant par rapport à toute nuance d’arrière-plan ou dégradé dérivé de UI_PKEY_GlobalBackgroundColor.
Notes
Dans Windows 7, UI_PKEY_GlobalHighlightColor peut être défini indépendamment de UI_PKEY_GlobalBackgroundColor.
L’exemple suivant montre comment spécifier une couleur personnalisée pour les propriétés UI_PKEY_GlobalTextColor, UI_PKEY_GlobalBackgroundColor et 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();
}
Convertir RVB en HSB
Cette section décrit la formule requise pour la mise en correspondance dynamique d’une valeur HSB d’infrastructure du ruban, la UI_PKEY_GlobalBackgroundColor dans cet exemple, à une couleur RVB spécifique au moment de l’exécution.
L’arrière-plan de ligne de l’onglet est utilisé comme point de référence, car il est rendu sous la forme d’une surface de couleur plate par rapport au dégradé de luminosité de l’arrière-plan du ruban.
Une conversion préliminaire est nécessaire pour obtenir une valeur HSL intermédiaire. Cette valeur HSL peut ensuite être convertie en valeur HSB.
Notes
La conversion de RVB en HSL est facilement effectuée avec la plupart des logiciels de retouche photo.
La conversion de HSL (avec chaque composant dans la plage de 0,0 à 1.0) en un paramètre HSB du ruban s’effectue par le biais des formules suivantes :
- Arrière-plan H = Round(255.0 H)
- Sbackground = Round(255.0 S)
- Bbackground = Round(257.7 + 149.9 ln(L)) si 0.1793 <= L <= 0.9821