Partager via


Fonction EngPlgBlt (winddi.h)

La fonction EngPlgBlt permet à GDI d’effectuer un transfert de bloc de bits de rotation.

Syntaxe

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

Paramètres

psoTrg

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

psoSrc

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

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 égal à 1, mais que la destination doit être laissée seule là où le masque est égal à zéro.

Si ce paramètre a la valeur NULL, il existe un rop4 implicite de 0xCCCC, ce qui signifie que la source doit être copiée partout dans le rectangle source.

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

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 , EngPlgBlt 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.

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. Cette structure XLATEOBJ peut être interrogée pour trouver la couleur RVB de n’importe quel index source.

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

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, consultez la documentation Microsoft Windows SDK.

pptlBrushOrg

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

pptfx

Pointeur vers trois structures POINTFIX qui définissent un paralléliogramme dans l’aire de destination. Un quatrième vertex implicite est donné comme suit : D = B + C − A. Pour obtenir une description de ce type de données, consultez Types de données GDI.

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

prcl

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

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 psoMsk a la valeur NULL.

[in] iMode

Définit la façon dont les pixels sources sont combinés pour obtenir les pixels de sortie. Ce paramètre peut être l’une des valeurs 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 bloc de bits étendu, les pixels de transfert 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 les transferts de blocs d’étirement, les pixels doivent être répliqués.
 

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

Valeur retournée

La valeur de retour est TRUE si la fonction réussit. Sinon, elle est FALSE et un code d’erreur est signalé.

Remarques

EngPlgBlt effectue uniquement certains types de rotations.

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 EngStretchBlt. 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 vecteurs et en calculant :

D = B + C - A

Notez qu’unlit stretch peut être exprimé exactement sous la forme d’un blit de paralléliogramme, mais que les coordonnées fournies pour la destination seront divisibles par cinq.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête winddi.h (inclure Winddi.h)
Bibliothèque Win32k.lib
DLL Win32k.sys

Voir aussi

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt