Share via


EngStretchBlt-Funktion (winddi.h)

Die EngStretchBlt-Funktion bewirkt, dass GDI eine Stretchbit-Blockübertragung durchführen kann.

Syntax

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

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 Quelle definiert. Die Maske wird durch eine Logikzuordnung definiert, bei der es sich um eine Bitmap mit einem Bit pro Pixel handelt.

Die Maske schränkt den Bereich der kopierten Quelle ein. Wenn dieser Parameter angegeben ist, verfügt er über einen impliziten rop4 von 0xCCAA, was bedeutet, dass die Quelle überall dort kopiert werden sollte, wo die Maske 1 ist, aber das Ziel sollte allein bleiben, wo die Maske 0 ist.

Wenn dieser Parameter NULL ist, wird der rop4 implizit 0xCCCC, was bedeutet, dass die Quelle überall im Quellrechteck kopiert werden sollte.

pco

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

Wann immer möglich, vereinfacht GDI den Ausschnitt. Im Gegensatz zu DrvBitBlt kann EngStretchBlt jedoch mit einem einzelnen Clipping-Rechteck 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.

[in] pca

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

[in] pptlHTOrg

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

[in] prclDest

Zeiger auf eine RECTL-Struktur , die den zu ändernden Bereich im Koordinatensystem der Zieloberfläche definiert. Dieses Rechteck wird durch zwei Punkte definiert, die nicht gut sortiert sind, was bedeutet, dass die Koordinaten des zweiten Punkts nicht unbedingt größer sind als die Koordinaten des ersten Punkts. Das beschriebene Rechteck enthält nicht den unteren und rechten Rand. Diese Funktion wird nie mit einem leeren Zielrechteck aufgerufen.

Wenn das Zielrechteck nicht gut sortiert ist, macht EngStretchBlt es gut sortiert.

[in] prclSrc

Zeiger auf eine RECTL-Struktur, die den zu kopierenden Bereich im Koordinatensystem der Quelloberfläche definiert. Das Rechteck wird dem von prclDest definierten Rechteck zugeordnet. Diese Funktion erhält nie ein leeres Quellrechteck, und die Punkte des Quellrechtecks sind immer gut sortiert.

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.)

Die Kanten eines beliebigen Rechtecks schneiden nie ein Pixel, sondern gehen um einen Satz von Pixeln herum. Die Pixel, die sich innerhalb des Rechtecks befinden, sind die Pixel, die für ein exklusives Rechteck unten rechts erwartet werden. EngStretchBlt ordnet das geometrische Quellrechteck exakt dem geometrischen Zielrechteck zu.

pptlMask

Zeiger auf eine POINTL-Struktur, die das Pixel in der angegebenen Maske definiert, das dem oberen linken Pixel im Quellrechteck entspricht. Dieser Parameter wird ignoriert, wenn keine Maske angegeben wird.

[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.

Wert Bedeutung
BLACKONWHITE Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem booleschen 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, damit 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 booleschen OR-Vorgang kombiniert werden. Bei einer gestreckten Bitblockübertragung sollten Pixel repliziert werden.

Rückgabewert

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

Hinweise

Mit dieser Funktion kann derselbe Halftoningalgorithmus auf GDI-Bitmaps und Geräteoberflächen angewendet werden.

Der Treiber sollte EngStretchBlt aufrufen, wenn er DrvStretchBlt eingebunden hat und aufgerufen wird, um etwas zu tun, das der Treiber nicht unterstützt.

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

CLIPOBJ

DrvBitBlt

DrvStretchBlt

SURFOBJ

XLATEOBJ