Función DrvGradientFill (winddi.h)
La función DrvGradientFill sombrea los primitivos especificados.
Sintaxis
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
);
Parámetros
[in, out] psoDest
Puntero a la estructura SURFOBJ que identifica la superficie en la que se va a dibujar.
[in] pco
Puntero a una estructura CLIPOBJ . Las rutinas de servicio CLIPOBJ_Xxx se proporcionan para enumerar la región del clip como un conjunto de rectángulos. Esta enumeración limita el área del destino que se modifica. Siempre que sea posible, GDI simplifica el recorte implicado.
[in, optional] pxlo
Puntero a una estructura XLATEOBJ . El controlador debe omitir este parámetro.
[in] pVertex
Puntero a una matriz de estructuras TRIVERTEX, con cada entrada que contiene información de posición y color. La estructura TRIVERTEX se describe en la documentación de Microsoft Windows SDK.
[in] nVertex
Especifica el número de estructuras TRIVERTEX de la matriz a la que apunta pVertex .
[in] pMesh
Puntero a una matriz de estructuras que definen la conectividad de los elementos TRIVERTEX a los que apunta pVertex .
Cuando se dibujan rectángulos, pMesh apunta a una matriz de estructuras de GRADIENT_RECT, cada una de las cuales especifica dos elementos TRIVERTEX que definen un rectángulo. Los elementos TRIVERTEX pueden representar cualquier par diagonalmente opuesto de vértices rectángulo. El dibujo de rectángulo es exclusivo de la esquina inferior derecha. Tanto TRIVERTEX como GRADIENT_RECT se definen en la documentación de Windows SDK.
Cuando se dibujan triángulos, pMesh apunta a una matriz de estructuras de GRADIENT_TRIANGLE, cada una de las cuales especifica los tres elementos TRIVERTEX que definen un triángulo. El dibujo de triángulos es exclusivo de la parte inferior derecha. GRADIENT_TRIANGLE se define en la documentación de Windows SDK.
[in] nMesh
Especifica el número de elementos de la matriz a los que apunta pMesh .
[in] prclExtents
Puntero a una estructura RECTL que define el área en la que se va a producir el dibujo degradado. Los puntos se especifican en el sistema de coordenadas de la superficie de destino. Este parámetro es útil para calcular el tamaño de las operaciones de dibujo.
[in] pptlDitherOrg
Puntero a una estructura POINTL que define el origen en la superficie para la dithering. El píxel superior izquierdo del patrón de dither se alinea con este punto.
[in] ulMode
Especifica el modo de dibujo actual y cómo interpretar la matriz a la que apunta pMesh . Este parámetro puede establecerse con uno de los siguientes valores:
GRADIENT_FILL_RECT_H
El parámetro pMesh apunta a una matriz de estructuras de GRADIENT_RECT. Cada rectángulo se sombrea de izquierda a derecha. En concreto, los píxeles superior izquierdo e inferior izquierdo son el mismo color, que son los píxeles superior derecho e inferior derecho.
GRADIENT_FILL_RECT_V
El parámetro pMesh apunta a una matriz de estructuras de GRADIENT_RECT. Cada rectángulo se sombrea de arriba a abajo. En concreto, los píxeles superior izquierdo y superior derecho son el mismo color, que son los píxeles inferior izquierdo e inferior derecho.
GRADIENT_FILL_TRIANGLE
El parámetro pMesh apunta a una matriz de estructuras de GRADIENT_TRIANGLE.
Los cálculos de relleno degradado para cada modo se documentan en la sección Comentarios.
Valor devuelto
DrvGradientFill devuelve TRUE tras el éxito. De lo contrario, devuelve FALSE e informa de un error llamando a EngSetLastError.
Comentarios
DrvGradientFill se puede implementar opcionalmente en controladores de gráficos. GDI nunca llama a esta función para superficies paletizadas.
El controlador enlaza DrvGradientFill estableciendo la marca HOOK_GRADIENTFILL cuando llama a EngAssociateSurface o EngModifySurface. Si el controlador ha enganchado DrvGradientFill y se llama a para realizar una operación que no admite, el controlador debe tener GDI para controlar la operación puntingando los datos en una llamada a EngGradientFill.
GDI no llamará a DrvGradientFill para superficies de destino de 8bpp.
Las fórmulas para calcular el valor de color en cada píxel del primitivo dependen de ulMode de la siguiente manera:
El error total acumulado en los tres canales de color no debe ser superior a ocho (8). Para obtener más información sobre el error permitido, vea Efectos especiales en controladores de pantalla.
El controlador debe omitir el valor alfa de los vértices, dejando el canal alfa sin cambios para las superficies que admiten la combinación alfa.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | winddi.h (incluya Winddi.h) |