Condividi tramite


enumerazione D2D1_ALPHA_MODE (dcommon.h)

Specifica la modalità di trattamento del valore alfa di una bitmap o di una destinazione di rendering.

Sintassi

typedef enum D2D1_ALPHA_MODE {
  D2D1_ALPHA_MODE_UNKNOWN = 0,
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
  D2D1_ALPHA_MODE_STRAIGHT = 2,
  D2D1_ALPHA_MODE_IGNORE = 3,
  D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;

Costanti

 
D2D1_ALPHA_MODE_UNKNOWN
Valore: 0
Il valore alfa potrebbe non essere significativo.
D2D1_ALPHA_MODE_PREMULTIPLIED
Valore: 1
Il valore alfa è stato premoltiplicato. Ogni colore viene prima ridimensionato in base al valore alfa. Il valore alfa stesso è lo stesso sia in alfa dritto che premoltiplicato. In genere, nessun valore del canale colore è maggiore del valore del canale alfa. Se un valore del canale colore in un formato premoltiplicato è maggiore del canale alfa, la matematica di fusione di origine standard produce una miscela aggiuntiva.
D2D1_ALPHA_MODE_STRAIGHT
Valore: 2
Il valore alfa non è stato premoltiplicato. Il canale alfa indica la trasparenza del colore.
D2D1_ALPHA_MODE_IGNORE
Valore: 3
Il valore alfa viene ignorato.
D2D1_ALPHA_MODE_FORCE_DWORD
Valore: 0xffffffff

Commenti

L'enumerazione D2D1_ALPHA_MODE viene usata con l'enumerazione D2D1_PIXEL_FORMAT per specificare la modalità alfa di una destinazione di rendering o di una bitmap. Diverse destinazioni di rendering e bitmap supportano diverse modalità alfa. Per un elenco, vedere Formati pixel supportati e modalità alfa.

Differenze tra alfa dritto e premoltiplicato

Quando si descrive un colore RGBA utilizzando alfa dritto, il valore alfa del colore viene archiviato nel canale alfa. Ad esempio, per descrivere un colore rosso opaco al 60%, usare i valori seguenti: (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). Il valore 255 indica il rosso completo e il 153 (ovvero il 60% del 255) indica che il colore deve avere un'opacità del 60%.

Quando si descrive un colore RGBA utilizzando alfa premoltiplicato, ogni colore viene moltiplicato per il valore alfa: (255 * 0,6, 0 * 0,6, 0 * 0,6, 255 * 0,6) = (153, 0, 0, 153).

Indipendentemente dalla modalità alfa della destinazione di rendering, i valori D2D1_COLOR_F vengono sempre interpretati come alfa retta. Ad esempio, quando si specifica il colore di un oggetto ID2D1SolidColorBrush da usare con una bitmap che usa la modalità alfa premoltiplicata, è necessario specificare il colore esattamente come si farebbe se la bitmap usasse alfa dritto. Quando si disegna con il pennello, Direct2D converte il colore nel formato di destinazione.

Modalità alfa per le destinazioni di rendering

Indipendentemente dall'impostazione della modalità alfa, il contenuto di una destinazione di rendering supporta la trasparenza. Ad esempio, se si disegna un rettangolo rosso parzialmente trasparente con una destinazione di rendering con una modalità alfa di D2D1_ALPHA_MODE_IGNORE, il rettangolo apparirà rosa (se lo sfondo è bianco), come ci si potrebbe aspettare.

Se si disegna un rettangolo rosso parzialmente trasparente quando la modalità alfa è CreateCompatibleRenderTarget metodo) per creare una bitmap che supporti la trasparenza.

Modalità ClearType e Alfa

Se si specifica una modalità alfa diversa da D2D1_ALPHA_MODE_IGNORE per una destinazione di rendering, la modalità di anti-aliasing del testo passa automaticamente da D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE a D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE. Quando si specifica una modalità alfa di D2D1_ALPHA_MODE_UNKNOWN, Direct2D imposta automaticamente l'alfa a seconda del tipo di destinazione di rendering. Per un elenco degli elementi risolti dall'impostazione di D2D1_ALPHA_MODE_UNKNOWN per ogni destinazione di rendering, vedere la panoramica dei formati pixel supportati e delle modalità alfa .

È possibile utilizzare il metodo SetTextAntialiasMode per ripristinare la modalità antialias del testo in D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE, ma il rendering del testo ClearType in una superficie trasparente può creare risultati imprevisti. Per eseguire il rendering del testo ClearType in una destinazione di rendering trasparente, è consigliabile usare una delle due tecniche seguenti.

  • Utilizzare il metodo PushAxisAlignedClip per ritagliare la destinazione di rendering nell'area in cui verrà eseguito il rendering del testo, quindi chiamare il metodo Clear e specificare un colore opaco, quindi eseguire il rendering del testo.
  • Utilizzare DrawRectangle per disegnare un rettangolo opaco dietro l'area in cui verrà eseguito il rendering del testo.

Requisiti

Requisito Valore
Client minimo supportato Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP]
Intestazione dcommon.h (include D2d1.h)

Vedi anche

Formati pixel e modalità alfa supportati