DrvGradientFill-Funktion (winddi.h)
Die DrvGradientFill-Funktion schattiert die angegebenen Grundtypen.
Syntax
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
);
Parameter
[in, out] psoDest
Zeiger auf die SURFOBJ-Struktur , die die Oberfläche identifiziert, auf der gezeichnet werden soll.
[in] pco
Zeiger auf eine CLIPOBJ-Struktur . Die CLIPOBJ_Xxx-Dienstroutinen werden bereitgestellt, um den Clipbereich als Eine Reihe von Rechtecken aufzulisten. Diese Enumeration schränkt den Bereich des geänderten Ziels ein. Nach Möglichkeit vereinfacht GDI den Ausschnitt.
[in, optional] pxlo
Zeiger auf eine XLATEOBJ-Struktur . Dieser Parameter sollte vom Treiber ignoriert werden.
[in] pVertex
Zeiger auf ein Array von TRIVERTEX-Strukturen, wobei jeder Eintrag Positions- und Farbinformationen enthält. Die TRIVERTEX-Struktur wird in der Microsoft Windows SDK-Dokumentation beschrieben.
[in] nVertex
Gibt die Anzahl der TRIVERTEX-Strukturen im Array an, auf das pVertex zeigt.
[in] pMesh
Zeiger auf ein Array von Strukturen, die die Konnektivität der TRIVERTEX-Elemente definieren, auf die pVertex zeigt.
Wenn Rechtecke gezeichnet werden, zeigt pMesh auf ein Array von GRADIENT_RECT Strukturen, von denen jedes zwei TRIVERTEX-Elemente angibt, die ein Rechteck definieren. Die TRIVERTEX-Elemente können jedes diagonal entgegengesetzte Paar von rechteckigen Scheitelpunkten darstellen. Das Zeichnen von Rechtecken ist unten rechts exklusiv. Sowohl TRIVERTEX als auch GRADIENT_RECT sind in der Windows SDK-Dokumentation definiert.
Wenn Dreiecke gezeichnet werden, zeigt pMesh auf ein Array von GRADIENT_TRIANGLE Strukturen, von denen jedes die drei TRIVERTEX-Elemente angibt, die ein Dreieck definieren. Dreieckszeichnung ist unten rechts exklusiv. GRADIENT_TRIANGLE ist in der Windows SDK-Dokumentation definiert.
[in] nMesh
Gibt die Anzahl der Elemente im Array an, auf die pMesh zeigt.
[in] prclExtents
Zeiger auf eine RECTL-Struktur , die den Bereich definiert, in dem die Farbverlaufszeichnung erfolgen soll. Die Punkte werden im Koordinatensystem der Zieloberfläche angegeben. Dieser Parameter ist nützlich, um die Größe der Zeichnungsvorgänge zu schätzen.
[in] pptlDitherOrg
Zeiger auf eine POINTL-Struktur , die den Ursprung auf der Oberfläche für dithering definiert. Das obere linke Pixel des Dithermusters wird an diesem Punkt ausgerichtet.
[in] ulMode
Gibt den aktuellen Zeichnungsmodus und die Interpretation des Arrays an, auf das pMesh zeigt. Dieser Parameter kann einer der folgenden Werte sein:
GRADIENT_FILL_RECT_H
Der pMesh-Parameter verweist auf ein Array von GRADIENT_RECT Strukturen. Jedes Rechteck muss von links nach rechts schattiert werden. Insbesondere haben die Pixel oben links und unten links die gleiche Farbe, wie die Pixel oben rechts und unten rechts.
GRADIENT_FILL_RECT_V
Der pMesh-Parameter verweist auf ein Array von GRADIENT_RECT Strukturen. Jedes Rechteck muss von oben nach unten schattiert werden. Insbesondere haben die Pixel oben links und rechts oben die gleiche Farbe, wie die pixeluntere linke und untere rechte Untere Pixel.
GRADIENT_FILL_TRIANGLE
Der pMesh-Parameter verweist auf ein Array von GRADIENT_TRIANGLE Strukturen.
Die Farbverlaufsfüllberechnungen für jeden Modus sind im Abschnitt Hinweise dokumentiert.
Rückgabewert
DrvGradientFill gibt bei Erfolg TRUE zurück. Andernfalls wird FALSE zurückgegeben und durch Aufrufen von EngSetLastError ein Fehler gemeldet.
Hinweise
DrvGradientFill kann optional in Grafiktreibern implementiert werden. GDI ruft diese Funktion nie für palettierte Oberflächen auf.
Der Treiber bindet DrvGradientFill ein, indem er beim Aufrufen von EngAssociateSurface oder EngModifySurface das HOOK_GRADIENTFILL-Flag festlegt. Wenn der Treiber drvGradientFill eingebunden hat und aufgerufen wird, um einen Vorgang auszuführen, den er nicht unterstützt, sollte der Treiber den Vorgang verarbeiten lassen, indem er die Daten in einem Aufruf von EngGradientFill einpsticht.
GDI ruft DrvGradientFill für 8bpp-Zieloberflächen nicht auf.
Die Formeln zum Berechnen des Farbwerts für jedes Pixel des Grundtyps hängen von ulMode wie folgt ab:
Der Gesamtfehler, der über alle drei Farbkanäle akkumuliert wird, darf nicht mehr als acht (8) betragen. Weitere Informationen zu zulässigen Fehlern finden Sie unter Spezialeffekte in Anzeigetreibern.
Der Treiber sollte den Alphawert der Scheitelpunkte ignorieren und den Alphakanal für Oberflächen unverändert lassen, die die Alphamischung unterstützen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | winddi.h (einschließlich Winddi.h) |