Freigeben über


DrvTransparentBlt-Funktion (winddi.h)

Die DrvTransparentBlt-Funktion bietet Bitblockübertragungsfunktionen mit Transparenz.

Syntax

BOOL DrvTransparentBlt(
  [in, out]      SURFOBJ  *psoDst,
  [in]           SURFOBJ  *psoSrc,
  [in]           CLIPOBJ  *pco,
  [in, optional] XLATEOBJ *pxlo,
  [in]           RECTL    *prclDst,
  [in]           RECTL    *prclSrc,
  [in]           ULONG    iTransColor,
  [in]           ULONG    ulReserved
);

Parameter

[in, out] psoDst

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

[in] psoSrc

Zeiger auf die SURFOBJ-Struktur, die die Quelloberfläche der Bitblockübertragung identifiziert.

[in] pco

Zeiger auf eine CLIPOBJ-Struktur . Die CLIPOBJ_Xxx-Dienstroutinen werden bereitgestellt, um den Clipbereich als Eine Reihe von Rechtecken aufzulisten. Diese Enumeration schränkt den Bereich des geänderten Ziels ein. Nach Möglichkeit vereinfacht GDI den Ausschnitt.

[in, optional] pxlo

Zeiger auf eine XLATEOBJ-Struktur , die angibt, wie die Quellfarbindizes zum Schreiben auf die Zieloberfläche übersetzt werden sollen. Wenn pxloNULL ist, ist keine Übersetzung erforderlich.

[in] prclDst

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. Das Rechteck ist unten rechts exklusiv; Das heißt, die unteren und rechten Ränder sind kein Teil der Bitblockübertragung. Die beiden Punkte, die das Rechteck definieren, sind immer gut sortiert.

DrvTransparentBlt wird nie mit einem leeren Zielrechteck aufgerufen.

[in] prclSrc

Zeiger auf eine RECTL-Struktur, die den zu kopierenden rechteckigen 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 Quellrechteck überschreitet niemals die Grenzen der Quelloberfläche und überragt daher nie die Quelloberfläche.

Dieses Rechteck wird dem zielrechteck zugeordnet, das von prclDst definiert wird. DrvTransparentBlt wird nie mit einem leeren Quellrechteck aufgerufen.

[in] iTransColor

Gibt die physische transparente Farbe im Quelloberflächenformat an. Bei Geräten mit Paletten ist dieser Wert ein Palettenindex. Bei Geräten ohne Paletten ist dieser Wert eine RGB-Farbe im Format, das auf der Quelloberfläche verwendet wird. Wenn das Quelloberflächenformat beispielsweise im RGB-Format 5:6:5 vorliegt, weist der Wert in diesem Parameter ebenfalls dieselbe Form auf.

[in] ulReserved

Reserviert; Dieser Parameter muss auf 0 (null) festgelegt werden.

Rückgabewert

DrvTransparentBlt gibt bei Erfolg TRUE zurück. Andernfalls wird FALSE zurückgegeben.

Hinweise

Optional können Sie die DrvTransparentBlt-Funktion in Grafiktreibern implementieren.

Die Bitblockübertragung mit Transparenz wird zwischen zwei geräteseitig verwalteten Oberflächen oder zwischen einer geräteverwalteten Oberfläche und einer von GDI verwalteten Standardformatbitbitbitte unterstützt. Treiberautoren werden empfohlen, den Fall der Verblutung von Off-Screen-Geräte-Bitmaps im Videospeicher auf andere Oberflächen im Videospeicher zu unterstützen. alle anderen Fälle können engTransparentBlt mit geringen Leistungseinbußen durchgestrichen werden. Der Treiber kann Aufrufe, die geräteseitig verwaltete Oberflächen betreffen, an EngTransparentBlt übertragen.

Alle Pixel auf der Quelloberfläche, die der von iTransColor angegebenen transparenten Farbe entsprechen, werden nicht kopiert. Eine ausführliche Erläuterung der transparenten Fehler finden Sie unter Kopieren von Bitmaps.

Der Treiber wird nie mit überlappenden Quell- und Zielrechtecken auf derselben Oberfläche aufgerufen.

Der Treiber sollte alle nicht verwendeten Bits im Farbschlüsselvergleich ignorieren, z. B. für das bedeutendste Bit, wenn das Bitmapformat 5:5:5 (jeweils fünf Bits rot, grün und blau) ist.

Der Treiber bindet DrvTransparentBlt ein, indem er beim Aufrufen von EngAssociateSurface das flag HOOK_TRANSPARENTBLT festlegt. Wenn der Treiber DrvTransparentBlt eingebunden hat und aufgerufen wird, um einen Vorgang auszuführen, den er nicht unterstützt, sollte der Treiber den Vorgang verarbeiten lassen, indem er die Daten in einem Aufruf von EngTransparentBlt weiterleitet.

Anforderungen

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

Weitere Informationen

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt