Personalizando cores da faixa de opções
A estrutura da Faixa de Opções do Windows expõe um conjunto de propriedades de cores que permitem que um aplicativo personalize a aparência de vários elementos da interface do usuário da Faixa de Opções em tempo de execução.
Introdução
As chaves de propriedade da estrutura listadas na tabela a seguir são usadas para definir a cor de vários elementos de interface do usuário em um aplicativo da Faixa de Opções. Essas propriedades permitem que a estrutura da Faixa de Opções dê suporte à personalização, aos requisitos de identidade e às especificações de identidade visual entre aplicativos.
Cor da Faixa de Opções | Chave de propriedade da estrutura |
---|---|
Cor da tela de fundo | UI_PKEY_GlobalBackgroundColor |
Cor de realce (somente Windows 7) |
** UI_PKEY_GlobalHighlightColor Introduzido em Windows 8: ** UI_PKEY_GlobalHighlightColor não pode ser definido independentemente de UI_PKEY_GlobalBackgroundColor. |
Cor do texto |
UI_PKEY_GlobalTextColorIntroduzido em Windows 8: alterações no valor padrão de UI_PKEY_GlobalBackgroundColor em Windows 8 podem exigir um ajuste para UI_PKEY_GlobalTextColor em aplicativos da Faixa de Opções projetados para o Windows 7. |
Especificar cores da faixa de opções
A estrutura da Faixa de Opções usa um modelo de cores Hue, Saturation, Brightness (HSB), que difere dos espaços de cor matiz, saturação, luminosidade (HSL) ou matiz, saturação, valor (HSV). Em particular, B representa um nível geral de brilho ou luminosidade em vez da leveza de uma cor específica.
Para especificar a cor dos elementos de interface do usuário na estrutura da Faixa de Opções, um aplicativo atribui valores de HSB a cada uma das propriedades de cores globais. Esses valores são aplicados universalmente em todos os elementos da Faixa de Opções, conforme exigido pelo aplicativo Ribbon (a estrutura não dá suporte à atribuição de valores HSB a elementos e controles individuais).
** Introduzido em Windows 8: **UI_PKEY_GlobalHighlightColor recebe o mesmo valor que UI_PKEY_GlobalBackgroundColor.
A tabela a seguir descreve os parâmetros HSB da estrutura da Faixa de Opções.
Componente
Descrição
Valores ajustados*
Matiz (H)
O pigmento, ou real, é normalmente identificado como um valor de um intervalo circular de 0 a 359 graus.
0 (vermelho) a 255 (vermelho)
Saturação (S)
A pureza, ou saturação, da cor medida como uma porcentagem de 0 a 100%.
0 (cinza) a 255 (totalmente saturado)
Brilho (B)
O brilho geral ou a escuridão da cor medida como uma porcentagem de 0 a 100%.
0 (escuro) a 255 (claro)
* O intervalo original para cada valor de parâmetro é convertido em um intervalo de 0 a 255 para a estrutura.
Os valores de HSB não identificam cores específicas. Em vez disso, a combinação de valores de propriedade HSB influencia como os gradientes de cor em toda a interface do usuário são ajustados em relação uns aos outros.
Ao atribuir valores HSB personalizados a UI_PKEY_GlobalTextColor e UI_PKEY_GlobalBackgroundColor, é recomendável que esses valores sejam de alto contraste suficiente para garantir a legibilidade. Especificamente, a cor do texto deve ser mais escura do que o tom mais claro da interface do usuário da faixa de opções. Quando necessário, a estrutura ajusta automaticamente o valor de HSB UI_PKEY_GlobalTextColor para fornecer contraste suficiente em relação a qualquer sombreamento de plano de fundo ou gradiente derivado de UI_PKEY_GlobalBackgroundColor.
Observação
No Windows 7, UI_PKEY_GlobalHighlightColor pode ser definido independentemente de UI_PKEY_GlobalBackgroundColor.
O exemplo a seguir demonstra como especificar uma cor personalizada para as propriedades UI_PKEY_GlobalTextColor, UI_PKEY_GlobalBackgroundColor e 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();
}
Converter RGB em HSB
Esta seção descreve a fórmula necessária para corresponder dinamicamente um valor HSB da estrutura da Faixa de Opções, o UI_PKEY_GlobalBackgroundColor neste exemplo, a uma cor RGB específica em tempo de execução.
A tela de fundo da linha de tabulação é usada como um ponto de referência porque é renderizada como uma superfície de cor plana em comparação com o gradiente de brilho da tela de fundo da faixa de opções.
Uma conversão preliminar é necessária para obter um valor HSL intermediário. Esse valor HSL pode ser convertido em um valor HSB.
Observação
A conversão de RGB para HSL é facilmente realizada com a maioria dos softwares de edição de fotos.
A conversão de HSL (com cada componente no intervalo de 0,0 a 1,0) em uma configuração de HSB da Faixa de Opções é realizada por meio das seguintes fórmulas:
- Hbackground = Round(255.0 H)
- Sbackground = Round(255.0 S)
- Bbackground = Round(257.7 + 149.9 ln(L)) if 0.1793 <= L <= 0,9821