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 |