Share via


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)

Weitere Informationen

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt