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)

Weitere Informationen

EngAssociateSurface

EngGradientFill