Partager via


Fonction DrvTransparentBlt (winddi.h)

La fonction DrvTransparentBlt fournit des fonctionnalités de transfert par bloc de bits avec transparence.

Syntaxe

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

Paramètres

[in, out] psoDst

Pointeur vers la structure SURFOBJ qui identifie la surface cible sur laquelle dessiner.

[in] psoSrc

Pointeur vers la structure SURFOBJ qui identifie la surface source du transfert de bloc de bits.

[in] pco

Pointeur vers une structure CLIPOBJ . Les routines de service CLIPOBJ_Xxx sont fournies pour énumérer la région de clip sous la forme d’un ensemble de rectangles. Cette énumération limite la zone de la destination modifiée. Dans la mesure du possible, GDI simplifie le découpage impliqué.

[in, optional] pxlo

Pointeur vers une structure XLATEOBJ qui indique comment les index de couleur source doivent être traduits pour l’écriture dans la surface cible. Si pxlo a la valeur NULL, aucune traduction n’est nécessaire.

[in] prclDst

Pointeur vers une structure RECTL qui définit la zone rectangulaire à modifier. Ce rectangle est spécifié dans le système de coordonnées de la surface de destination et est défini par deux points : en haut à gauche et en bas à droite. Le rectangle est exclusif en bas à droite ; autrement dit, ses bords inférieur et droit ne font pas partie du transfert de bloc de bits. Les deux points qui définissent le rectangle sont toujours bien ordonnés.

DrvTransparentBlt n’est jamais appelé avec un rectangle de destination vide.

[in] prclSrc

Pointeur vers une structure RECTL qui définit la zone rectangulaire à copier. Ce rectangle est spécifié dans le système de coordonnées de la surface source et est défini par deux points : en haut à gauche et en bas à droite. Les deux points qui définissent le rectangle sont toujours bien ordonnés.

Le rectangle source ne dépassera jamais les limites de la surface source et ne dépassera donc jamais la surface source.

Ce rectangle est mappé au rectangle de destination défini par prclDst. DrvTransparentBlt n’est jamais appelé avec un rectangle source vide.

[in] iTransColor

Spécifie la couleur physique transparente dans le format de surface source. Pour les appareils avec des palettes, cette valeur est un index de palette. Pour les appareils sans palettes, cette valeur est une couleur RVB au format utilisé dans la surface source. Par exemple, si le format de surface source est au format RVB 5 :6 :5, la valeur de ce paramètre sera également sous la même forme.

[in] ulReserved

Réservés au; ce paramètre doit être défini sur zéro.

Valeur retournée

DrvTransparentBlt retourne TRUE en cas de réussite. Sinon, il retourne FALSE.

Remarques

Vous pouvez éventuellement implémenter la fonction DrvTransparentBlt dans les pilotes graphiques.

Le transfert de blocs de bits avec transparence est pris en charge entre deux surfaces gérées par l’appareil ou entre une surface gérée par l’appareil et une bitmap de format standard gérée par GDI. Les enregistreurs de pilotes sont encouragés à prendre en charge le cas de blting des bitmaps d’appareil hors écran dans la mémoire vidéo vers d’autres surfaces dans la mémoire vidéo ; tous les autres cas peuvent être puntés à EngTransparentBlt avec peu de pénalité de performances. Le pilote peut effectuer des appels impliquant des surfaces gérées par l’appareil à EngTransparentBlt.

Les pixels de la surface source qui correspondent à la couleur transparente spécifiée par iTransColor ne sont pas copiés. Pour obtenir une explication détaillée des blts transparents, consultez Copie de bitmaps.

Le pilote ne sera jamais appelé avec des rectangles source et de destination qui se chevauchent sur la même surface.

Le pilote doit ignorer tous les bits inutilisés dans la comparaison de touches de couleur, par exemple pour le bit le plus significatif lorsque le format bitmap est 5 :5 :5 (cinq bits chacun de rouge, vert et bleu).

Le pilote accroche DrvTransparentBlt en définissant l’indicateur HOOK_TRANSPARENTBLT lorsqu’il appelle EngAssociateSurface. Si le pilote a crocheté DrvTransparentBlt et est appelé pour effectuer une opération qu’il ne prend pas en charge, GDI doit gérer l’opération en transférant les données dans un appel à EngTransparentBlt.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête winddi.h (inclure Winddi.h)

Voir aussi

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt