DrvPlgBlt-Funktion (winddi.h)
Die DrvPlgBlt-Funktion bietet Funktionen für die Rotation von Bitblockübertragungen zwischen Kombinationen von geräte- und GDI-verwalteten Oberflächen.
Syntax
BOOL DrvPlgBlt(
[in, out] SURFOBJ *psoTrg,
[in, out] SURFOBJ *psoSrc,
[in, optional] SURFOBJ *psoMsk,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in, optional] COLORADJUSTMENT *pca,
[in, optional] POINTL *pptlBrushOrg,
[in] POINTFIX *pptfx,
[in] RECTL *prcl,
[in, optional] POINTL *pptl,
[in] ULONG iMode
);
Parameter
[in, out] psoTrg
Zeiger auf eine SURFOBJ-Struktur , die die Zu zeichnende Oberfläche beschreibt.
[in, out] psoSrc
Zeiger auf eine SURFOBJ-Struktur, die die Quelle für den Bitblockübertragungsvorgang beschreibt.
[in, optional] 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 schränkt den Bereich der kopierten Quelle ein. Eine Maske verfügt über einen impliziten rop4 von 0xCCAA. Das bedeutet, dass die Quelle überall dort kopiert werden sollte, wo die Maske eins ist, aber das Ziel sollte dort allein gelassen werden, wo die Maske 0 ist.
Wenn dieser Parameter NULL ist, wird rop4 implizit 0xCCCC, was 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.
[in] pco
Zeiger auf eine CLIPOBJ-Struktur , die den zu ändernden Bereich des Ziels einschränkt. GDI-Funktionen listen den Clipbereich als Gruppe von Rechtecken auf.
Wann immer möglich, vereinfacht GDI den Ausschnitt. Im Gegensatz zur DrvBitBlt-Funktion kann DrvPlgBlt mit einem einzelnen Clipping-Rechteck aufgerufen werden. Dadurch werden Rundungsfehler beim Ausschneiden der Ausgabe verhindert.
[in, optional] pxlo
Zeiger auf eine XLATEOBJ-Struktur , die definiert, wie Farbindizes zwischen der Quell- und Zieloberfläche übersetzt werden. Der XLATEOBJ kann auch abgefragt werden, um die RGB-Farbe für einen beliebigen Quellindex zu finden. Wenn pxloNULL ist, ist keine Übersetzung erforderlich.
Zum Interpolieren von Farben ist eine hochwertige Rotations-Bitblockübertragung erforderlich.
[in, optional] pca
Zeiger auf eine COLORADJUSTMENT-Struktur, die die Farbanpassungswerte definiert, die auf die Quellbits angewendet werden sollen. Weitere Informationen zu dieser Struktur finden Sie in der Microsoft Windows SDK-Dokumentation.
[in, optional] pptlBrushOrg
Zeiger auf eine BRUSHOBJ-Struktur , die den Ursprung des Halbtonpinsels angibt. Gerätetreiber, die Halbtonpinsel verwenden, sollten das obere linke Pixel des Pinselmusters an diesem Punkt auf der Geräteoberfläche ausrichten.
[in] pptfx
Zeiger auf drei POINTFIX-Strukturen, die ein Parallelogramm auf der Zieloberfläche definieren. Definieren Sie pptfx[0] als A, pptfx[1] als B und pptfx[2] als C. A, B und C definieren drei Scheitelpunkte eines Parallelogramms. Ein vierter impliziter Scheitelpunkt wird wie folgt angegeben:
D = B + C − A
DrvPlgBlt wird nie mit A, B und C kollinear bezeichnet.
[in] prcl
Zeiger auf eine RECTL-Struktur , die den zu kopierenden Bereich im Koordinatensystem der Quelloberfläche definiert. Die Punkte des Quellrechtecks sind gut sortiert. DrvPlgBlt erhält nie ein leeres Quellrechteck.
[in, optional] pptl
Zeiger auf eine POINTL-Struktur , die angibt, welches Pixel in der angegebenen Maske dem linken oberen Pixel im Quellrechteck entspricht. Ignorieren Sie diesen Parameter, wenn kein psoMsk angegeben ist.
[in] iMode
Definiert, wie Quellpixel kombiniert werden, um Ausgabepixel abzurufen. Die folgenden Werte sind möglich:
Wert | Bedeutung |
---|---|
BLACKONWHITE | Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem AND-Vorgang kombiniert werden. Bei einer gestreckten Bitblockübertragung sollten Pixel repliziert werden. |
COLORONCOLOR | Bei einer verkleinernden Bitblockübertragung sollten genügend Pixel ignoriert werden, sodass Pixel nicht kombiniert werden müssen. Bei einer gestreckten 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 optimal anzunähern. |
WHITEONBLACK | Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem OR-Vorgang kombiniert werden. Bei einer gestreckten Bitblockübertragung sollten Pixel repliziert werden. |
Die Methoden WHITEONBLACK, BLACKONWHITE und COLORONCOLOR bieten Kompatibilität für alte Anwendungen, liefern aber nicht die besten Ergebnisse für Farboberflächen.
Rückgabewert
DrvPlgBlt gibt bei Erfolg TRUE zurück. Andernfalls wird ein Fehler gemeldet und FALSE zurückgegeben.
Hinweise
Ähnlich wie DrvStretchBlt ermöglicht DrvPlgBlt einem Gerätetreiber das Schreiben in GDI-Bitmaps, insbesondere wenn der Treiber Halftoning durchführen kann.
Um die Bitmap zu transformieren, führt diese Funktion Bitblockübertragungen von einem durch prcl definierten Rechteck in ein beliebiges Parallelogramm durch. Das Parallelogramm wird durch pptfx definiert, das auf ein Array von drei Punkten verweist.
Das Quellrechteck an prcl gilt als geometrisches Rechteck, dessen Ecken von (-0,5,-0,5) aus den angegebenen ganzzahligen Koordinaten verschoben werden. Dies entspricht genau dem Quellrechteck für DrvStretchBlt. Das Quellrechteck ist immer gut sortiert.
Die obere linke Ecke des Quellrechtecks ist 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, das durch Behandeln der drei angegebenen Punkte als Vektoren und Berechnung definiert wird:
D = B + C - A
Beachten Sie, dass ein Stretch-BLT genau als Parallelogramm-Blt ausgedrückt werden kann, aber die koordinaten, die für das Ziel angegeben werden, weisen einen Bruchteil von 0,5 auf.
DrvPlgBlt ist optional für Grafiktreiber. Sie wird nur für bestimmte Rotationstypen bereitgestellt. Der Treiber sollte EngPlgBlt aufrufen, wenn DrvPlgBlt aufgerufen wird, um Vorgänge auszuführen, die nicht unterstützt werden.
Anforderungen
Zielplattform | Desktop |
Kopfzeile | winddi.h (einschließlich Winddi.h) |