Partager via


Fonction DrvPlgBlt (winddi.h)

La fonction DrvPlgBlt fournit des fonctionnalités de transfert de blocs de bits de rotation entre des combinaisons de surfaces gérées par l’appareil et gérées par GDI.

Syntaxe

BOOL DrvPlgBlt(
  [in, out]      SURFOBJ         *psoTrg,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMsk,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in, optional] POINTL          *pptlBrushOrg,
  [in]           POINTFIX        *pptfx,
  [in]           RECTL           *prcl,
  [in, optional] POINTL          *pptl,
  [in]           ULONG           iMode
);

Paramètres

[in, out] psoTrg

Pointeur vers une structure SURFOBJ qui décrit la surface sur laquelle dessiner.

[in, out] psoSrc

Pointeur vers une structure SURFOBJ qui décrit la source de l’opération de transfert de bloc de bits.

[in, optional] psoMsk

Pointeur vers une structure FACULTATIVE SURFOBJ qui représente un masque pour la source. Il est défini par une carte logique, qui est une bitmap avec un bit par pixel.

Ce masque limite la zone de la source copiée. Un masque a un rop4 implicite de 0xCCAA, ce qui signifie que la source doit être copiée partout où le masque est un, mais que la destination doit être laissée seule partout où le masque est égal à zéro.

Si ce paramètre a la valeur NULL, rop4 est implicitement 0xCCCC, ce qui signifie que la source doit être copiée partout dans le rectangle source.

Le masque est toujours assez grand pour contenir la source appropriée ; la mosaïne n’est pas nécessaire.

[in] pco

Pointeur vers une structure CLIPOBJ qui limite la zone de la destination à modifier. Les fonctions GDI énumèrent la région de clip sous la forme d’un ensemble de rectangles.

Dans la mesure du possible, GDI simplifie le découpage impliqué. Contrairement à la fonction DrvBitBlt , DrvPlgBlt peut être appelé avec un rectangle de découpage unique. Cela permet d’éviter les erreurs d’arrondi lors du découpage de la sortie.

[in, optional] pxlo

Pointeur vers une structure XLATEOBJ qui définit la façon dont les index de couleur sont traduits entre les surfaces source et cible. Le XLATEOBJ peut également être interrogé pour trouver la couleur RVB de n’importe quel index source. Si pxlo a la valeur NULL, aucune traduction n’est nécessaire.

Un transfert de bloc de rotation de haute qualité est nécessaire pour interpoler les couleurs.

[in, optional] pca

Pointeur vers une structure COLORADJUSTMENT qui définit les valeurs d’ajustement des couleurs à appliquer à l’image bitmap source avant d’étendre les bits. Pour plus d’informations sur cette structure, consultez la documentation Microsoft Windows SDK.

[in, optional] pptlBrushOrg

Pointeur vers une structure BRUSHOBJ qui indique l’origine du pinceau en demi-teinte. Les pilotes de périphérique qui utilisent des pinceaux de demi-teinte doivent aligner le pixel supérieur gauche du motif du pinceau avec ce point sur la surface de l’appareil.

[in] pptfx

Pointeur vers trois structures POINTFIX qui définissent un paralléliogramme dans l’aire de destination. Définissez pptfx[0] comme A, pptfx[1] comme B et pptfx[2] comme C. A, B et C définissent trois sommets d’un paralléliogramme. Un quatrième sommet implicite est donné comme suit :

    D = B + C − A

DrvPlgBlt n’est jamais appelé avec A, B et C collinear.

[in] prcl

Pointeur vers une structure RECTL qui définit la zone à copier, dans le système de coordonnées de la surface source. Les points du rectangle source sont bien ordonnés. DrvPlgBlt ne recevra jamais de rectangle source vide.

[in, optional] pptl

Pointeur vers une structure POINTL qui spécifie quel pixel du masque donné correspond au pixel supérieur gauche dans le rectangle source. Ignorez ce paramètre si aucun psoMsk n’est spécifié.

[in] iMode

Définit la façon dont les pixels sources sont combinés pour obtenir les pixels de sortie. Cette valeur peut être l'une des suivantes :

Valeur Signification
BLACKONWHITE Lors d’un transfert de bloc binaire réduit, les pixels doivent être combinés avec une opération AND. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.
COLORONCOLOR Lors d’un transfert de bloc de bits de réduction, suffisamment de pixels doivent être ignorés pour éviter d’avoir à combiner les pixels. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.
DEMI-TEINTES Le pilote peut utiliser des groupes de pixels dans la surface de sortie pour se rapprocher au mieux de la couleur ou du niveau de gris de l’entrée.
WHITEONBLACK Lors d’un transfert de bloc de bits de réduction, les pixels doivent être combinés avec une opération OR. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.
 

Les méthodes WHITEONBLACK, BLACKONWHITE et COLORONCOLOR offrent une compatibilité pour les anciennes applications, mais ne produisent pas les meilleurs résultats pour les surfaces de couleur.

Valeur retournée

DrvPlgBlt retourne TRUE en cas de réussite. Sinon, elle signale une erreur et retourne FALSE.

Remarques

À l’instar de DrvStretchBlt, DrvPlgBlt permet à un pilote de périphérique d’écrire dans des bitmaps GDI, en particulier lorsque le pilote peut effectuer un halftoning.

Pour transformer la bitmap, cette fonction effectue des transferts de bloc de bits d’un rectangle défini par prcl vers n’importe quel paralléliogramme. Le paralléliogramme est défini par pptfx, qui pointe vers un tableau de trois points.

Le rectangle source au niveau de prcl est considéré comme un rectangle géométrique dont les angles sont déplacés par (-0,5,-0,5) des coordonnées entières données. Cela correspond exactement au rectangle source pour DrvStretchBlt. Le rectangle source est toujours bien ordonné.

Le coin supérieur gauche du rectangle source est mappé au premier point, A. Le coin supérieur droit du rectangle source est mappé au deuxième point, B. Le coin inférieur gauche du rectangle source est mappé au troisième point, C. Le coin inférieur droit du rectangle source est mappé au point implicite dans le paralléliogramme défini en traitant les trois points donnés comme des vecteurs et en calculant :

    D = B + C - A

Notez qu’un blt étendu peut être exprimé exactement sous la forme d’un blt de paralléliogramme, mais que les coordonnées fournies pour la destination auront une partie fractionnaire de 0,5.

DrvPlgBlt est facultatif pour les pilotes graphiques. Il est fourni uniquement pour certains types de rotation. Le pilote doit appeler EngPlgBlt si DrvPlgBlt est appelé pour effectuer des opérations qu’il ne prend pas en charge.

Configuration requise

   
Plateforme cible Bureau
En-tête winddi.h (inclure Winddi.h)

Voir aussi

DrvAlphaBlend

DrvBitBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt