DrvStretchBlt-Funktion (winddi.h)

Die DrvStretchBlt-Funktion bietet Funktionen zur Dehnung von Bitblockübertragungen zwischen einer beliebigen Kombination aus geräteverwalteten und GDI-verwalteten Oberflächen.

Syntax

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

Parameter

[in, out] psoDest

Zeiger auf die SURFOBJ-Struktur , die die Oberfläche identifiziert, auf der gezeichnet werden soll.

[in, out] psoSrc

Zeiger auf die SURFOBJ-Struktur, die die Quelle für den Bitblockübertragungsvorgang definiert.

[in, optional] psoMask

Optionaler Zeiger auf eine SURFOBJ-Struktur, die eine Oberfläche definiert, die eine Maske für die Quelle bereitstellt. Die Maske wird durch eine Logikzuordnung definiert, bei der es sich um eine Bitmap mit 1 Bit pro Pixel handelt.

Die Maske begrenzt den Bereich der Quelle, der kopiert wird. Wenn dieser Parameter angegeben ist, verfügt er über einen impliziten rop4-Wert von 0xCCAA, d. h. die Quelle sollte kopiert werden, wo die Maske eins ist, aber das Ziel sollte in Ruhe gelassen werden, wenn die Maske null ist.

Wenn dieser Parameter NULL ist, gibt es einen impliziten rop4 von 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 im Ziel einschränkt. GDI-Dienste werden bereitgestellt, um den Clipbereich als Eine Reihe von Rechtecks aufzulisten.

Nach Möglichkeit vereinfacht GDI den Ausschnitt. Im Gegensatz zu DrvBitBlt kann DrvStretchBlt jedoch mit einem einzelnen Clipping-Rechteck aufgerufen werden. Dadurch werden Rundungsfehler beim Beschneiden der Ausgabe verhindert.

[in, optional] pxlo

Zeiger auf eine XLATEOBJ-Struktur , die angibt, wie Farbindizes zwischen der Quell- und Zieloberfläche übersetzt werden sollen. Wenn pxloNULL ist, ist keine Übersetzung erforderlich.

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

[in, optional] pca

Zeiger auf eine COLORADJUSTMENT-Struktur, die die Farbanpassungswerte definiert, die vor dem Dehnung der Bits auf die Quellbitbitbits angewendet werden sollen. (Weitere Informationen finden Sie in der dokumentation zu Microsoft Windows SDK.)

[in] pptlHTOrg

Zeiger auf eine POINTL-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] 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 unbedingt gut sortiert sind, d. h. die Koordinaten des zweiten Punkts sind nicht notwendigerweise größer als die des ersten Punkts. Das rechteck, das sie beschreiben, enthält nicht den unteren und rechten Rand. Diese Funktion wird nie mit einem leeren Zielrechteck aufgerufen.

DrvStretchBlt sollte die beiden x-Werte und/oder die beiden y-Werte austauschen, wenn das Zielrechteck nicht ordnungsgemäß sortiert ist.

[in] prclSrc

Zeiger auf eine RECTL-Struktur, die den Bereich definiert, der in das Koordinatensystem der Quelloberfläche kopiert wird. Das Rechteck wird durch zwei Punkte definiert und dem durch prclDest definierten Rechteck zugeordnet. Die Punkte des Quellrechtecks sind gut sortiert. Diese Funktion erhält nie ein leeres Quellrechteck.

Die Zuordnung wird durch prclSrc und prclDest definiert. Die in prclDest und prclSrc angegebenen Punkte liegen auf ganzzahligen Koordinaten, die Pixelzentrierungen entsprechen. Ein durch zwei solcher Punkte definiertes Rechteck wird als geometrisches Rechteck mit zwei Scheitelpunkten betrachtet, deren Koordinaten die angegebenen Punkte sind, aber 0,5 von jeder Koordinate subtrahiert werden. (POINTL-Strukturen sollten als kurze Schreibweise für die Angabe dieser Bruchkoordinatenvertices betrachtet werden.)

Die Ränder eines Rechtecks überschneiden sich nie über ein Pixel, sondern um einen Satz von Pixeln. Die Pixel innerhalb des Rechtecks sind die pixeligen, die für ein "exklusives" Rechteck "unten rechts" erwartet werden. DrvStretchBlt zuordnen das geometrische Quellrechteck genau auf das geometrische Zielrechteck.

[in, optional] pptlMask

Zeiger auf eine POINTL-Struktur, die angibt, welches Pixel in der angegebenen Maske dem oberen linken Pixel im Quellrechteck entspricht. Ignorieren Sie diesen Parameter, wenn keine Maske angegeben 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.

Wert Bedeutung
BLACKONWHITE Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem booleschen AND-Vorgang kombiniert werden. Bei einer Stretch-Bitblockübertragung sollten Pixel repliziert werden.
COLORONCOLOR Bei einer verkleinerten Bitblockübertragung sollten genügend Pixel ignoriert werden, damit Pixel nicht kombiniert werden müssen. Bei einer Stretch-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 am besten zu erreichen.
WHITEONBLACK Bei einer verkleinernden Bitblockübertragung sollten Pixel mit einem booleschen OR-Vorgang kombiniert werden. Bei einer Stretch-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 protokolliert.

Hinweise

DrvStretchBlt ermöglicht dem Gerätetreiber das Schreiben in GDI-Bitmaps, insbesondere wenn der Treiber eine Halbtonierung durchführen kann. Mit dieser Funktion kann derselbe Halbtonierungsalgorithmus auf GDI-Bitmaps und Geräteoberflächen angewendet werden.

Diese Funktion kann bereitgestellt werden, um nur bestimmte Formen der Dehnung zu behandeln, z. B. durch ganzzahlige Vielfache. Wenn der Treiber den Aufruf eingebunden hat und aufgefordert wird, einen Vorgang auszuführen, den er nicht unterstützt, sollte der Treiber die Daten an EngStretchBlt weiterleiten, damit GDI verarbeiten kann.

Wenn der Treiber möchte, dass GDI die Halbtonierung übernimmt und den richtigen iMode-Wert sicherstellen möchte, kann der Treiber DrvStretchBlt einbinden, iMode auf HALFTONE festlegen und GDI mit EngStretchBlt mit dem festgelegten iMode-Wert zurückrufen.

DrvStretchBlt ist für Anzeigetreiber optional.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile winddi.h (einschließlich Winddi.h)

Weitere Informationen

CLIPOBJ

DrvBitBlt

EngStretchBlt

SURFOBJ

XLATEOBJ