Condividi tramite


Personalizzazione dei colori della barra multifunzione

Il framework della barra multifunzione di Windows espone un set di proprietà di colore che consentono a un'applicazione di personalizzare l'aspetto di vari elementi dell'interfaccia utente della barra multifunzione in fase di esecuzione.

Introduzione

Le chiavi delle proprietà del framework elencate nella tabella seguente vengono usate per impostare il colore di vari elementi dell'interfaccia utente in un'applicazione della barra multifunzione. Queste proprietà consentono al framework della barra multifunzione di supportare la personalizzazione, i requisiti di identità e le specifiche di personalizzazione tra applicazioni.

Colore della barra multifunzione Chiave della proprietà Framework
Colore di sfondo UI_PKEY_GlobalBackgroundColor
Colore di evidenziazione (solo Windows 7) ** UI_PKEY_GlobalHighlightColor Introdotta in Windows 8: ** UI_PKEY_GlobalHighlightColor non può essere impostata in modo indipendente da UI_PKEY_GlobalBackgroundColor.

Colore del testo UI_PKEY_GlobalTextColorintrodotta in Windows 8: le modifiche apportate al valore predefinito di UI_PKEY_GlobalBackgroundColor in Windows 8 potrebbero richiedere una regolazione per UI_PKEY_GlobalTextColor nelle app della barra multifunzione progettate per Windows 7.

Specificare i colori della barra multifunzione

Il framework della barra multifunzione usa un modello di colore Hue, Saturazione, Luminosità (HSB), che differisce dalle tonalità più comuni, saturazione, luminosità (HSL) o tonalità, saturazione, spazi di colore (HSV). In particolare, B rappresenta un livello di luminosità o luminosità generale anziché la leggerezza di un particolare colore.

Per specificare il colore degli elementi dell'interfaccia utente nel framework della barra multifunzione, un'applicazione assegna valori HSB a ognuna delle proprietà del colore globale. Questi valori vengono quindi applicati universalmente in tutti gli elementi della barra multifunzione come richiesto dall'applicazione della barra multifunzione (il framework non supporta l'assegnazione di valori HSB ai singoli elementi e controlli).

** Introdotta in Windows 8: **UI_PKEY_GlobalHighlightColor viene assegnato lo stesso valore di UI_PKEY_GlobalBackgroundColor.

Nella tabella seguente vengono descritti i parametri HSB del framework della barra multifunzione.

Componente

Descrizione

Valori modificati*

Hue (H)

Il pigmento, o effettivo, colore viene in genere identificato come valore da un intervallo circolare di 0 a 359 gradi.

0 (rosso) a 255 (rosso)

Saturazione (S)

La purezza, o la saturazione, del colore misurato come percentuale da 0 a 100%.

0 (grigio) a 255 (completamente saturo)

Luminosità (B)

La luminosità complessiva o l'oscurità del colore misurata come percentuale da 0 a 100%.

da 0 (scuro) a 255 (luce)

* L'intervallo originale per ogni valore di parametro viene convertito in un intervallo compreso tra 0 e 255 per il framework.

I valori HSB non identificano colori specifici. La combinazione di valori delle proprietà HSB influisce invece sulla modalità di regolazione delle sfumature di colore in tutta l'interfaccia utente rispetto all'altra.

Quando si assegnano valori HSB personalizzati a UI_PKEY_GlobalTextColor e UI_PKEY_GlobalBackgroundColor, è consigliabile che questi valori siano di contrasto sufficiente per garantire la leggibilità. In particolare, il colore di testo deve essere più scuro rispetto all'ombreggiatura più chiara dell'interfaccia utente della barra multifunzione. Se necessario, il framework regola automaticamente il valore HSB UI_PKEY_GlobalTextColor per fornire un contrasto sufficiente rispetto a qualsiasi sfumatura o sfumatura di sfondo derivata da UI_PKEY_GlobalBackgroundColor.

Nota

In Windows 7, UI_PKEY_GlobalHighlightColor può essere impostato in modo indipendente da UI_PKEY_GlobalBackgroundColor.

Nell'esempio seguente viene illustrato come specificare un colore personalizzato per le proprietà 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();
}

Convertire RGB in HSB

Questa sezione descrive la formula necessaria per la corrispondenza dinamica di un valore HSB del framework della barra multifunzione, il UI_PKEY_GlobalBackgroundColor in questo esempio, a un colore RGB specifico in fase di esecuzione.

Lo sfondo della riga di tabulazioni viene usato come punto di riferimento perché viene eseguito il rendering come superficie di colore flat rispetto alla sfumatura di luminosità dello sfondo della barra multifunzione.

Una conversione preliminare è necessaria per ottenere un valore HSL intermedio. Questo valore HSL può quindi essere convertito in un valore HSB.

Nota

La conversione da RGB a HSL è facilmente eseguita con la maggior parte del software di modifica delle foto.

La conversione di HSL (con ogni componente nell'intervallo di 0,0 a 1,0) in un'impostazione HSB della barra multifunzione viene eseguita tramite le formule seguenti:

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

Linee guida sul colore

Proprietà del framework