Partager via


Fonction DrvGradientFill (winddi.h)

La fonction DrvGradientFill ombre les primitives spécifiées.

Syntaxe

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
);

Paramètres

[in, out] psoDest

Pointeur vers la structure SURFOBJ qui identifie la surface sur laquelle dessiner.

[in] pco

Pointeur vers une structure CLIPOBJ . Les routines de service CLIPOBJ_Xxx sont fournies pour énumérer la région de clip sous la forme d’un ensemble de rectangles. Cette énumération limite la zone de la destination modifiée. Dans la mesure du possible, GDI simplifie le découpage impliqué.

[in, optional] pxlo

Pointeur vers une structure XLATEOBJ . Ce paramètre doit être ignoré par le pilote.

[in] pVertex

Pointeur vers un tableau de structures TRIVERTEX, chaque entrée contenant des informations de position et de couleur. La structure TRIVERTEX est décrite dans la documentation Microsoft Windows SDK.

[in] nVertex

Spécifie le nombre de structures TRIVERTEX dans le tableau vers lesquelles pVertex pointe.

[in] pMesh

Pointeur vers un tableau de structures qui définissent la connectivité des éléments TRIVERTEX vers lesquels pVertex pointe.

Lorsque des rectangles sont dessinés, pMesh pointe vers un tableau de structures GRADIENT_RECT, chacune spécifiant deux éléments TRIVERTEX qui définissent un rectangle. Les éléments TRIVERTEX peuvent représenter n’importe quelle paire de sommets rectangles opposés en diagonale. Le dessin rectangle est exclusif en bas à droite. TRIVERTEX et GRADIENT_RECT sont définis dans la documentation SDK Windows.

Lorsque des triangles sont dessinés, pMesh pointe vers un tableau de structures GRADIENT_TRIANGLE, chacune spécifiant les trois éléments TRIVERTEX qui définissent un triangle. Le dessin de triangle est exclusif en bas à droite. GRADIENT_TRIANGLE est défini dans la documentation SDK Windows.

[in] nMesh

Spécifie le nombre d’éléments du tableau vers lesquels pMesh pointe.

[in] prclExtents

Pointeur vers une structure RECTL qui définit la zone dans laquelle le dessin de dégradé doit se produire. Les points sont spécifiés dans le système de coordonnées de la surface de destination. Ce paramètre est utile pour estimer la taille des opérations de dessin.

[in] pptlDitherOrg

Pointeur vers une structure POINTL qui définit l’origine sur la surface pour le tramage. Le pixel supérieur gauche du modèle de trame est aligné sur ce point.

[in] ulMode

Spécifie le mode de dessin actuel et comment interpréter le tableau auquel pMesh pointe. Ce paramètre peut être l’une des valeurs suivantes :

GRADIENT_FILL_RECT_H

Le paramètre pMesh pointe vers un tableau de structures GRADIENT_RECT. Chaque rectangle doit être ombré de gauche à droite. Plus précisément, les pixels en haut à gauche et en bas à gauche sont de la même couleur, tout comme les pixels en haut à droite et en bas à droite.

GRADIENT_FILL_RECT_V

Le paramètre pMesh pointe vers un tableau de structures GRADIENT_RECT. Chaque rectangle doit être ombré de haut en bas. Plus précisément, les pixels en haut à gauche et en haut à droite sont de la même couleur, tout comme les pixels inférieur gauche et inférieur droit.

GRADIENT_FILL_TRIANGLE

Le paramètre pMesh pointe vers un tableau de structures GRADIENT_TRIANGLE.

Les calculs de remplissage en dégradé pour chaque mode sont documentés dans la section Remarques.

Valeur retournée

DrvGradientFill retourne TRUE en cas de réussite. Sinon, elle retourne FALSE et signale une erreur en appelant EngSetLastError.

Remarques

DrvGradientFill peut éventuellement être implémenté dans les pilotes graphiques. GDI n’appelle jamais cette fonction pour les surfaces palettisées.

Le pilote raccorde DrvGradientFill en définissant l’indicateur HOOK_GRADIENTFILL lorsqu’il appelle EngAssociateSurface ou EngModifySurface. Si le pilote a connecté DrvGradientFill et qu’il est appelé pour effectuer une opération qu’il ne prend pas en charge, le pilote doit demander à GDI de gérer l’opération en puntant les données dans un appel à EngGradientFill.

GDI n’appelle pas DrvGradientFill pour les surfaces de destination 8bpp.

Les formules de calcul de la valeur de couleur à chaque pixel de la primitive dépendent de ulMode comme suit :

L’erreur totale accumulée sur les trois canaux de couleur ne doit pas être supérieure à huit (8). Pour plus d’informations sur les erreurs autorisées, consultez Effets spéciaux dans les pilotes d’affichage.

Le pilote doit ignorer la valeur alpha des sommets, en laissant le canal alpha inchangé pour les surfaces qui prennent en charge le mélange alpha.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête winddi.h (inclure Winddi.h)

Voir aussi

EngAssociateSurface

EngGradientFill