Funzione DrvGradientFill (winddi.h)
La funzione DrvGradientFill ombreggiate le primitive specificate.
Sintassi
BOOL DrvGradientFill(
[in, out] SURFOBJ *psoDest,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in] TRIVERTEX *pVertex,
[in] ULONG nVertex,
[in] PVOID pMesh,
[in] ULONG nMesh,
[in] RECTL *prclExtents,
[in] POINTL *pptlDitherOrg,
[in] ULONG ulMode
);
Parametri
[in, out] psoDest
Puntatore alla struttura SURFOBJ che identifica la superficie su cui disegnare.
[in] pco
Puntatore a una struttura CLIPOBJ . Le routine di servizio CLIPOBJ_Xxx vengono fornite per enumerare l'area clip come set di rettangoli. Questa enumerazione limita l'area della destinazione modificata. Se possibile, GDI semplifica il ritaglio coinvolto.
[in, optional] pxlo
Puntatore a una struttura XLATEOBJ . Questo parametro deve essere ignorato dal driver.
[in] pVertex
Puntatore a una matrice di strutture TRIVERTEX, con ogni voce contenente informazioni sulla posizione e sul colore. La struttura TRIVERTEX è descritta nella documentazione di Microsoft Windows SDK.
[in] nVertex
Specifica il numero di strutture TRIVERTEX nella matrice a cui pVertex punta.
[in] pMesh
Puntatore a una matrice di strutture che definiscono la connettività degli elementi TRIVERTEX a cui pVertex punta.
Quando i rettangoli vengono disegnati, pMesh punta a una matrice di strutture GRADIENT_RECT, ognuna delle quali specifica due elementi TRIVERTEX che definiscono un rettangolo. Gli elementi TRIVERTEX possono rappresentare qualsiasi coppia diagonalmente opposta di vertici rettangoli. Il disegno rettangolo è esclusivo in basso a destra. Sia TRIVERTEX che GRADIENT_RECT sono definiti nella documentazione di Windows SDK.
Quando vengono disegnati triangoli, pMesh punta a una matrice di strutture GRADIENT_TRIANGLE, ognuna delle quali specifica i tre elementi TRIVERTEX che definiscono un triangolo. Il disegno del triangolo è esclusivo in basso a destra. GRADIENT_TRIANGLE è definito nella documentazione di Windows SDK.
[in] nMesh
Specifica il numero di elementi nella matrice a cui punta pMesh .
[in] prclExtents
Puntatore a una struttura RECTL che definisce l'area in cui si verifica il disegno sfumatura. I punti vengono specificati nel sistema di coordinate della superficie di destinazione. Questo parametro è utile per stimare le dimensioni delle operazioni di disegno.
[in] pptlDitherOrg
Puntatore a una struttura POINTL che definisce l'origine sulla superficie per la dithering. Il pixel superiore sinistro del modello dither è allineato a questo punto.
[in] ulMode
Specifica la modalità di disegno corrente e come interpretare la matrice a cui punta pMesh . Questo parametro può essere uno dei valori seguenti:
GRADIENT_FILL_RECT_H
Il parametro pMesh punta a una matrice di strutture GRADIENT_RECT. Ogni rettangolo deve essere ombreggiato da sinistra a destra. In particolare, i pixel in alto a sinistra e inferiore sinistro sono lo stesso colore, come sono i pixel in alto a destra e in basso a destra.
GRADIENT_FILL_RECT_V
Il parametro pMesh punta a una matrice di strutture GRADIENT_RECT. Ogni rettangolo deve essere ombreggiato dall'alto verso il basso. In particolare, i pixel in alto a sinistra e in alto a destra sono lo stesso colore, come sono i pixel in basso a sinistra e in basso a destra.
GRADIENT_FILL_TRIANGLE
Il parametro pMesh punta a una matrice di strutture GRADIENT_TRIANGLE.
I calcoli di riempimento sfumatura per ogni modalità sono documentati nella sezione Osservazioni.
Valore restituito
DrvGradientFill restituisceTRUE al successo. In caso contrario, restituisce FALSE e segnala un errore chiamando EngSetLastError.
Commenti
DrvGradientFill può essere implementato facoltativamente nei driver grafici. GDI non chiama mai questa funzione per le superfici palletizzate.
Il driver aggancia DrvGradientFill impostando il flag di HOOK_GRADIENTFILL quando chiama EngAssociateSurface o EngModifySurface. Se il driver ha collegato DrvGradientFill e viene chiamato per eseguire un'operazione che non supporta, il driver deve gestire l'operazione puntando i dati in una chiamata a EngGradientFill.
GDI non chiamerà DrvGradientFill per le superfici di destinazione 8bpp.
Le formule per calcolare il valore di colore in ogni pixel della primitiva dipendono da ulMode come indicato di seguito:
L'errore totale accumulato su tutti e tre i canali di colore non deve essere maggiore di otto (8). Per altre informazioni sull'errore consentito, vedere Effetti speciali nei driver di visualizzazione.
Il driver deve ignorare il valore alfa dei vertici, lasciando invariato il canale alfa per le superfici che supportano la fusione alfa.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | winddi.h (include Winddi.h) |