Freigeben über


EngStretchBltROP-Funktion (winddi.h)

Die EngStretchBltROP-Funktion führt eine Stretchbitblockübertragung mithilfe eines ROP durch.

Syntax

ENGAPI BOOL EngStretchBltROP(
       SURFOBJ         *psoDest,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMask,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlHTOrg,
  [in] RECTL           *prclDest,
  [in] RECTL           *prclSrc,
       POINTL          *pptlMask,
  [in] ULONG           iMode,
       BRUSHOBJ        *pbo,
  [in] DWORD           rop4
);

Parameter

psoDest

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

psoSrc

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

psoMask

Zeiger auf eine SURFOBJ-Struktur, die eine Maske für die Quelloberfläche definiert. Die Maske wird durch eine Logikzuordnung definiert, bei der es sich um eine Bitmap mit 1 Bit pro Pixel handelt. In der Regel schränkt eine Maske den Bereich ein, der auf der Zieloberfläche geändert werden soll. Diese Maske sollte immer die gleiche Größe wie die Quelloberfläche aufweisen.

pco

Zeiger auf eine CLIPOBJ-Struktur , die den zu ändernden Bereich im Ziel einschränkt. Die CLIPOBJ_Xxx-Dienstroutinen werden bereitgestellt, um den Clipbereich als Eine Reihe von Rechtecken aufzulisten.

Wann immer möglich, vereinfacht GDI den Ausschnitt. Im Gegensatz zu EngBitBlt kann EngStretchBltROP jedoch mit einem einzelnen Clippingrechteck aufgerufen werden. Dadurch werden Rundungsfehler beim Ausschneiden der Ausgabe verhindert.

pxlo

Zeiger auf eine XLATEOBJ-Struktur , die angibt, wie Farbindizes zwischen der Quell- und Zieloberfläche übersetzt werden sollen.

Diese XLATEOBJ-Struktur kann auch abgefragt werden, um die RGB-Farbe für einen beliebigen Quellindex zu finden. Eine qualitativ hochwertige Stretchbitblockübertragung muss in einigen Fällen Farben interpolieren.

pca

Zeiger auf eine COLORADJUSTMENT-Struktur, die die Farbanpassungswerte definiert, die auf die Quellbits angewendet werden sollen. Weitere Informationen finden Sie in der Windows SDK-Dokumentation.

pptlHTOrg

Zeiger auf eine POINTL-Struktur , die den Ursprung des Halbtonpinsels auf der Zieloberfläche definiert. Bei Verwendung von Halbtonpinsel richtet GDI an diesem Punkt das obere linke Pixel des Pinselmusters aus und wiederholt den Pinsel entsprechend seinen Abmessungen. GDI ignoriert diesen Parameter, wenn der rop4-Parameter kein Muster erfordert.

[in] prclDest

Zeiger auf eine RECTL-Struktur , die den zu ändernden rechteckigen Bereich definiert. Dieses Rechteck wird im Koordinatensystem der Zieloberfläche angegeben und durch zwei Punkte definiert: links oben und unten rechts. Die beiden Punkte, die das Rechteck definieren, sind nicht immer gut sortiert, was bedeutet, dass die Koordinaten des zweiten Punkts nicht unbedingt größer als die des ersten Punkts sind. Wenn das Zielrechteck nicht gut sortiert ist, macht es GDI so.

Das Rechteck ist unten rechts exklusiv; Das heißt, die unteren und rechten Ränder sind nicht Teil der Kopie.

EngStretchBltROP darf nie mit einem leeren Zielrechteck aufgerufen werden.

[in] prclSrc

Zeiger auf eine RECTL-Struktur, die den zu kopierenden Bereich definiert. Dieses Rechteck wird im Koordinatensystem der Quelloberfläche angegeben und durch zwei Punkte definiert: links oben und unten rechts. Die beiden Punkte, die das Rechteck definieren, sind immer gut sortiert.

Das Rechteck ist unten rechts exklusiv; Das heißt, die unteren und rechten Ränder sind nicht Teil der Kopie.

Dieses Rechteck wird dem Rechteck zugeordnet, dem prclDest-Punkte zugeordnet sind.

EngStretchBltROP darf nie mit einem leeren Quellrechteck aufgerufen werden.

pptlMask

Zeiger auf eine POINTL-Struktur, die das Pixel in der Maske definiert, auf die prclMask zeigt. Dieses Pixel entspricht dem oberen linken Pixel im Quellrechteck, auf das prclSrc verweist. Dieser Parameter wird ignoriert, wenn keine Maske angegeben wird. Das heißt, GDI ignoriert pptlMask , wenn prclMaskNULL ist.

[in] iMode

Gibt an, wie Quellpixel kombiniert werden, um Ausgabepixel abzurufen. Der HALFTONE-Modus ist langsamer als die anderen Modi, erzeugt jedoch Bilder mit höherer Qualität. Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
BLACKONWHITE Bei einer verkleinernden Bitblockübertragung kombiniert GDI Pixel mit einem booleschen AND-Vorgang. Bei einer gestreckten Bitblockübertragung werden Pixel repliziert.
COLORONCOLOR Bei einer verkleinernden Bitblockübertragung ignoriert GDI genügend Pixel, sodass Pixel nicht kombiniert werden müssen. Bei einer gestreckten Bitblockübertragung werden Pixel repliziert.
HALBTON GDI verwendet Pixelgruppen in der Ausgabeoberfläche, um die Farbe oder graue Ebene der Eingabe optimal anzunähern.
WHITEONBLACK Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem booleschen OR-Vorgang kombiniert werden. Bei einer gestreckten Bitblockübertragung sollten Pixel repliziert werden.

pbo

Zeiger auf die BRUSHOBJ-Struktur , die zum Definieren des Musters für die Bitblockübertragung verwendet werden soll. Die BRUSHOBJ_pvGetRbrush-Dienstroutine von GDI ruft die Realisierung des Pinsels des Geräts ab. GDI ignoriert diesen Parameter, wenn der rop4-Parameter kein Muster erfordert.

[in] rop4

Stellt einen Rastervorgang dar, der definiert, wie die Masken-, Muster-, Quell- und Zielpixel kombiniert werden, um ein Ausgabepixel auf die Zieloberfläche zu schreiben.

Hierbei handelt es sich um einen quaternären Rastervorgang, der eine natürliche Erweiterung des üblichen ternären Rop3-Vorgangs ist. Ein Rop4 hat 16 relevante Bits, die den 8 definierenden Bits eines Rop3 ähneln. (Die anderen redundanten Bits des Rop3 werden ignoriert.) Die einfachste Möglichkeit, einen Rop4 zu implementieren, besteht darin, seine 2 Bytes separat zu berücksichtigen. Das untere Byte gibt einen Rop3 an, der überall berechnet werden soll, wo die Maske, auf die psoMask verweist, 1 ist. Das hohe Byte gibt einen Rop3-Wert an, der berechnet und angewendet werden kann, wo die Maske 0 ist.

Rückgabewert

EngStretchBltROP gibt bei Erfolg TRUE zurück. Andernfalls wird ein Fehler gemeldet und FALSE zurückgegeben.

Hinweise

Der Treiber sollte EngStretchBltROP aufrufen, wenn er DrvStretchBltROP eingebunden hat, aber nicht alle Vorgänge unterstützen kann.

Die Zuordnung wird durch prclSrc und prclDest definiert. Die in prclDest und prclSrc angegebenen Punkte liegen auf ganzzahligen Koordinaten, die Pixelzentren entsprechen. Ein durch zwei solche Punkte definiertes Rechteck wird als geometrisches Rechteck mit zwei Scheitelpunkten betrachtet, deren Koordinaten die angegebenen Punkte sind, aber mit 0,5 subtrahiert von jeder Koordinate. (POINTL-Strukturen sind kurzschreibweise zum Angeben dieser Bruchkoordinatenvertices.)

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

EngPlgBlt

EngStretchBlt

EngTransparentBlt