Share via


DrvStrokeAndFillPath-Funktion (winddi.h)

Die DrvStrokeAndFillPath-Funktion stricht (skizziert) und füllt gleichzeitig einen Pfad aus.

Syntax

BOOL DrvStrokeAndFillPath(
  [in, out]      SURFOBJ   *pso,
  [in, out]      PATHOBJ   *ppo,
  [in]           CLIPOBJ   *pco,
  [in, optional] XFORMOBJ  *pxo,
  [in]           BRUSHOBJ  *pboStroke,
  [in]           LINEATTRS *plineattrs,
  [in]           BRUSHOBJ  *pboFill,
  [in]           POINTL    *pptlBrushOrg,
  [in]           MIX       mixFill,
  [in]           FLONG     flOptions
);

Parameter

[in, out] pso

Zeiger auf eine SURFOBJ-Struktur , die die Zu zeichnende Oberfläche beschreibt.

[in, out] ppo

Zeiger auf eine PATHOBJ-Struktur , die den zu füllenden Pfad beschreibt. Die PATHOBJ_Xxx-Dienstroutinen werden bereitgestellt, um die Linien, Bezierkurven und andere Daten aufzulisten, aus denen der Pfad besteht.

[in] pco

Zeiger auf eine CLIPOBJ-Struktur . Die CLIPOBJ_Xxx-Dienstroutinen werden bereitgestellt, um den Clipbereich als Gruppe von Rechtecken aufzulisten.

[in, optional] pxo

Zeiger auf eine XFORMOBJ-Struktur , die erforderlich ist, wenn eine geometrische breite Linie gezeichnet wird. Es gibt die Transformation an, die Weltkoordinaten in Gerätekoordinaten übernimmt. Dies ist erforderlich, da der Pfad in Gerätekoordinaten angegeben wird, aber eine geometrische breite Linie tatsächlich in Weltkoordinaten erweitert wird. Der XFORMOBJ kann abgefragt werden, um herauszufinden, was die Transformation ist.

[in] pboStroke

Zeiger auf eine BRUSHOBJ-Struktur , die den Pinsel angibt, der beim Streichen des Pfads verwendet werden soll.

[in] plineattrs

Zeiger auf die LINEATTRS-Struktur , die die Attribute der zu zeichnenden Linie beschreibt.

[in] pboFill

Zeiger auf eine BRUSHOBJ-Struktur, die den Pinsel angibt, der beim Füllen des Pfads verwendet werden soll.

[in] pptlBrushOrg

Zeiger auf eine POINTL-Struktur , die den Pinselursprung für beide Pinsel angibt.

[in] mixFill

Der Mischmodus, der die Für den Pinsel zu verwendenden Rastervorgänge im Vordergrund und im Hintergrund definiert. Weitere Informationen zum Mischmodus finden Sie unter Hinweise.

[in] flOptions

Gibt entweder FP_WINDINGMODE an, was bedeutet, dass eine Füllung im Wickelmodus ausgeführt werden soll, oder FP_ALTERNATEMODE, was bedeutet, dass eine Füllung im alternierenden Modus ausgeführt werden soll. Alle anderen Flags sollten ignoriert werden. Weitere Informationen zu diesen Modi finden Sie unter Pfadfüllmodi.

Rückgabewert

Der Rückgabewert ist TRUE , wenn der Treiber den Pfad ausfüllen kann. Andernfalls ist der Rückgabewert FALSE, wenn GDI stattdessen den Pfad ausfüllen soll. Wenn ein Fehler auftritt, wird der Rückgabewert DDI_ERROR, und ein Fehlercode wird protokolliert.

Hinweise

Wenn eine breite Linie zum Streichen verwendet wird, muss die gefüllte Fläche reduziert werden, um den Ausgleich zu kompensieren.

Der Treiber kann FALSE zurückgeben, wenn der Pfad oder die Beschneidung für das Gerät zu komplex ist. in diesem Fall konvertiert GDI in einen einfacheren Aufruf. Wenn der Gerätetreiber beispielsweise das flag GCAPS_BEZIERS im flGraphicsCaps-Member der DEVINFO-Struktur festgelegt hat und dann einen Pfad mit Bézierkurven empfängt, kann er FALSE zurückgeben. GDI konvertiert dann die Bézier-Kurven in Linien und ruft DrvStrokeAndFillPath erneut auf. Wenn der Gerätetreiber erneut FALSE zurückgibt, vereinfacht GDI den Aufruf weiter und führt Aufrufe an DrvStrokePath und DrvFillPath oder an DrvBitBlt aus, abhängig von der Mischung und Breite der Zeilen, aus der der Pfad besteht.

Der Mixmodus definiert, wie das eingehende Muster mit den Daten gemischt werden soll, die sich bereits auf der Geräteoberfläche befinden. Der MIX-Datentyp besteht aus zwei ROP2-Werten (Binary Raster Operation), die in eine einzelne ULONG gepackt sind. Das Byte der niedrigsten Ordnung definiert den Rastervorgang im Vordergrund. das nächste Byte definiert den Hintergrundrastervorgang. Weitere Informationen zu Rastervorgangscodes finden Sie in der Microsoft Windows SDK-Dokumentation.

Anforderungen

   
Zielplattform Desktop
Kopfzeile winddi.h (einschließlich Winddi.h)

Weitere Informationen

CLIPOBJ

DrvBitBlt

DrvFillPath

DrvStrokePath

LINEATTRS

PATHOBJ

SURFOBJ

XFORMOBJ