Condividi tramite


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)

Vedi anche

EngAssociateSurface

EngGradientFill