Funzione DrvTransparentBlt (winddi.h)

La funzione DrvTransparentBlt offre funzionalità di trasferimento a blocchi bit con trasparenza.

Sintassi

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

Parametri

[in, out] psoDst

Puntatore alla struttura SURFOBJ che identifica la superficie di destinazione su cui disegnare.

[in] psoSrc

Puntatore alla struttura SURFOBJ che identifica la superficie di origine del trasferimento a blocchi di bit.

[in] pco

Puntatore a una struttura CLIPOBJ . Le routine di servizio CLIPOBJ_Xxx vengono fornite per enumerare l'area clip come set di rettangoli. Questa enumerazione limita l'area della destinazione modificata. Se possibile, GDI semplifica il ritaglio coinvolto.

[in, optional] pxlo

Puntatore a una struttura XLATEOBJ che indica come devono essere convertiti gli indici di colore di origine per la scrittura nella superficie di destinazione. Se pxlo è NULL, non è necessaria alcuna traduzione.

[in] prclDst

Puntatore a una struttura RECTL che definisce l'area rettangolare da modificare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di destinazione e viene definito da due punti: in alto a sinistra e in basso a destra. Il rettangolo è esclusivo in basso a destra; ovvero, i suoi bordi inferiori e destro non fanno parte del trasferimento a blocchi di bit. I due punti che definiscono il rettangolo sono sempre ordinati.

DrvTransparentBlt non viene mai chiamato con un rettangolo di destinazione vuoto.

[in] prclSrc

Puntatore a una struttura RECTL che definisce l'area rettangolare da copiare. Questo rettangolo viene specificato nel sistema di coordinate della superficie di origine e viene definito da due punti: in alto a sinistra e in basso a destra. I due punti che definiscono il rettangolo sono sempre ordinati.

Il rettangolo di origine non supererà mai i limiti della superficie di origine e quindi non sovraggeggerà mai la superficie di origine.

Questo rettangolo viene mappato al rettangolo di destinazione definito da prclDst. DrvTransparentBlt non viene mai chiamato con un rettangolo di origine vuoto.

[in] iTransColor

Specifica il colore trasparente fisico nel formato della superficie di origine. Per i dispositivi con tavolozze, questo valore è un indice della tavolozza. Per i dispositivi senza tavolozze, questo valore è un colore RGB nel formato usato nell'area di origine. Ad esempio, se il formato della superficie di origine è in formato RGB 5:6:5, il valore di questo parametro sarà anche nello stesso formato.

[in] ulReserved

Riservati; questo parametro deve essere impostato su zero.

Valore restituito

DrvTransparentBlt restituisce TRUE al successo. In caso contrario, restituisce FALSE.

Commenti

Facoltativamente, è possibile implementare la funzione DrvTransparentBlt nei driver grafici.

Il trasferimento a blocchi bit con trasparenza è supportato tra due superfici gestite dal dispositivo o tra una superficie gestita dal dispositivo e una bitmap di formato standard gestito da GDI. I writer di driver sono invitati a supportare il caso di blting dalle bitmap del dispositivo fuori schermo in memoria video ad altre superfici nella memoria video; tutti gli altri casi possono essere puntati a EngTransparentBlt con una piccola penalità sulle prestazioni. Il driver può punt call che coinvolgono superfici gestite dal dispositivo a EngTransparentBlt.

I pixel nell'area di origine che corrispondono al colore trasparente specificato da iTransColor non vengono copiati. Per una spiegazione dettagliata dei blts trasparenti, vedere Copia di bitmap.

Il driver non verrà mai chiamato con rettangoli di origine e destinazione sovrapposti sulla stessa superficie.

Il driver deve ignorare tutti i bit inutilizzati nel confronto tra chiavi di colore, ad esempio per il bit più significativo quando il formato bitmap è 5:5:5 (cinque bit ciascuno di rosso, verde e blu).

Il driver collega DrvTransparentBlt impostando il flag di HOOK_TRANSPARENTBLT quando chiama EngAssociateSurface. Se il driver ha collegato DrvTransparentBlt e viene chiamato per eseguire un'operazione che non supporta, il driver deve gestire l'operazione inoltrando i dati in una chiamata a EngTransparentBlt.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione winddi.h (include Winddi.h)

Vedi anche

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt