Share via


EngPlgBlt-Funktion (winddi.h)

Die EngPlgBlt-Funktion bewirkt, dass GDI eine gedrehte Bitblockübertragung durchführt.

Syntax

ENGAPI BOOL EngPlgBlt(
       SURFOBJ         *psoTrg,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMsk,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlBrushOrg,
       POINTFIX        *pptfx,
       RECTL           *prcl,
       POINTL          *pptl,
  [in] ULONG           iMode
);

Parameter

psoTrg

Zeiger auf eine SURFOBJ-Struktur , die die Oberfläche beschreibt, auf der gezeichnet werden soll.

psoSrc

Zeiger auf eine SURFOBJ-Struktur, die die Quelloberfläche für den Bitblockübertragungsvorgang beschreibt.

psoMsk

Zeiger auf eine optionale SURFOBJ-Struktur, die eine Maske für die Quelle darstellt. Sie wird durch eine Logikzuordnung definiert, bei der es sich um eine Bitmap mit einem Bit pro Pixel handelt.

Diese Maske begrenzt den Bereich der Quelle, der kopiert wird. Eine Maske verfügt über einen impliziten rop4 von 0xCCAA. Dies bedeutet, dass die Quelle kopiert werden sollte, wo die Maske 1 ist, aber das Ziel sollte allein gelassen werden, wenn die Maske null ist.

Wenn dieser Parameter NULL ist, gibt es einen impliziten rop4 von 0xCCCC. Dies bedeutet, dass die Quelle überall im Quellrechteck kopiert werden sollte.

Die Maske ist immer groß genug, um die entsprechende Quelle zu enthalten; Kacheln sind nicht erforderlich.

pco

Zeiger auf eine CLIPOBJ-Struktur , die den Bereich des zu ändernden Ziels einschränkt. GDI-Funktionen listen den Clipbereich als Eine Reihe von Rechtecks auf.

Nach Möglichkeit vereinfacht GDI den Ausschnitt. Im Gegensatz zur DrvBitBlt-Funktion kann EngPlgBlt mit einem einzelnen Clippingrechteck aufgerufen werden. Dadurch werden Rundungsfehler beim Beschneiden der Ausgabe verhindert.

pxlo

Zeiger auf eine XLATEOBJ-Struktur , die definiert, wie Farbindizes zwischen der Quell- und Zieloberfläche übersetzt werden. Diese XLATEOBJ-Struktur kann abgefragt werden, um die RGB-Farbe für einen beliebigen Quellindex zu finden.

Um Farben zu interpolieren, ist eine qualitativ hochwertige drehbare Bitblockübertragung erforderlich.

pca

Zeiger auf eine COLORADJUSTMENT-Struktur, die die Farbanpassungswerte definiert, die vor dem Dehnung der Bits auf die Quellbitbitbits angewendet werden sollen. Weitere Informationen finden Sie in der Microsoft Windows SDK-Dokumentation.

pptlBrushOrg

Zeiger auf eine POINTL-Struktur , die den Ursprung des Halbtonpinsels angibt. Treiber, die Halbtonpinsel verwenden, sollten das obere linke Pixel des Pinselmusters an diesem Punkt auf der Geräteoberfläche ausrichten.

pptfx

Zeiger auf drei POINTFIX-Strukturen, die ein Parallelogramm auf der Zieloberfläche definieren. Ein vierter, impliziter Scheitelpunkt wird als angegeben: D = B + C − A. Eine Beschreibung dieses Datentyps finden Sie unter GDI-Datentypen.

EngPlgBlt wird nie mit A, B und C kollinear aufgerufen.

prcl

Zeiger auf eine RECTL-Struktur , die im Koordinatensystem der Quelloberfläche den zu kopierenden Bereich definiert. Die Punkte des Quellrechtecks sind gut sortiert. EngPlgBlt erhält niemals ein leeres Quellrechteck.

pptl

Zeiger auf eine POINTL-Struktur, die angibt, welches Pixel in der angegebenen Maske dem oberen linken Pixel im Quellrechteck entspricht. Ignorieren Sie diesen Parameter, wenn psoMskNULL ist.

[in] iMode

Definiert, wie Quellpixel kombiniert werden, um Ausgabepixel abzurufen. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
BLACKONWHITE Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem AND-Vorgang kombiniert werden. Bei einer dehnungsbasierten Bitblockübertragung sollten Pixel repliziert werden.
COLORONCOLOR Bei einer verkleinerten Bitblockübertragung sollten genügend Pixel ignoriert werden, damit Pixel nicht kombiniert werden müssen. Bei einer Stretch-Bitblockübertragung sollten Pixel repliziert werden.
HALBTON Der Treiber kann Gruppen von Pixeln in der Ausgabeoberfläche verwenden, um die Farbe oder graue Ebene der Eingabe am besten zu erreichen.
WHITEONBLACK Bei einer verkleinerten Bitblockübertragung sollten Pixel mit einem OR-Vorgang kombiniert werden. Bei Einer Stretchblockübertragung sollten Pixel repliziert werden.
 

Die Methoden WHITEONBLACK, BLACKONWHITE und COLORONCOLOR sind einfach und bieten Kompatibilität für alte Anwendungen, liefern aber nicht die besten Ergebnisse für Farboberflächen.

Rückgabewert

Der Rückgabewert ist TRUE , wenn die Funktion erfolgreich ist. Andernfalls ist er FALSE , und es wird ein Fehlercode gemeldet.

Hinweise

EngPlgBlt führt nur bestimmte Rotationstypen aus.

Diese Funktion führt Bitblockübertragungen von einem durch prcl definierten Rechteck in ein beliebiges Parallelogramm aus. Das Parallelogramm wird durch pptfx definiert, das auf ein Array von drei Punkten zeigt.

Das Quellrechteck bei prcl gilt als geometrisches Rechteck, dessen Ecken durch (-0,5,-0,5) von den angegebenen ganzzahligen Koordinaten verschoben werden. Dies entspricht genau dem Quellrechteck für EngStretchBlt. Das Quellrechteck ist immer gut sortiert.

Die obere linke Ecke des Quellrechtecks wird dem ersten Punkt A zugeordnet. Die obere rechte Ecke des Quellrechtecks wird dem zweiten Punkt B zugeordnet. Die linke untere Ecke des Quellrechtecks wird dem dritten Punkt C zugeordnet. Die untere rechte Ecke des Quellrechtecks wird dem impliziten Punkt im Parallelogramm zugeordnet, der definiert wird, indem die drei angegebenen Punkte als Vektoren behandelt werden, und die Berechnung erfolgt:

D = B + C - A

Beachten Sie, dass ein Stretch-Blit genau als Parallelogramm-Blit ausgedrückt werden kann, aber die koordinaten, die für das Ziel angegeben werden, sind durch fünf teilbar.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header winddi.h (einschließlich Winddi.h)
Bibliothek Win32k.lib
DLL Win32k.sys

Weitere Informationen

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt