Partager via


Fonction EngStretchBlt (winddi.h)

La fonction EngStretchBlt permet à GDI d’effectuer un transfert de bloc de bits étendu.

Syntaxe

ENGAPI BOOL EngStretchBlt(
       SURFOBJ         *psoDest,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMask,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
  [in] COLORADJUSTMENT *pca,
  [in] POINTL          *pptlHTOrg,
  [in] RECTL           *prclDest,
  [in] RECTL           *prclSrc,
       POINTL          *pptlMask,
  [in] ULONG           iMode
);

Paramètres

psoDest

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 pour le transfert de bloc binaire.

psoMask

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

Le masque limite la zone de la source copiée. Si ce paramètre est spécifié, il a un rop4 implicite de 0xCCAA, ce qui signifie que la source doit être copiée partout où le masque est 1, mais la destination doit être laissée seule là où le masque est 0.

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

pco

Pointeur vers une structure CLIPOBJ qui limite la zone à modifier dans la destination. Des services GDI sont fournis pour énumérer la région de clip sous la forme d’un ensemble de rectangles.

Dans la mesure du possible, GDI simplifie le découpage impliqué. Toutefois, contrairement à DrvBitBlt, EngStretchBlt 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 spécifie la façon dont les index de couleur doivent être traduits entre les surfaces source et cible.

Cette structure XLATEOBJ peut également être interrogée pour rechercher la couleur RVB de n’importe quel index source. Dans certains cas, un transfert de bloc de bits extensible de haute qualité doit interpoler les couleurs.

[in] 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.

[in] pptlHTOrg

Pointeur vers une structure POINTL qui définit 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.

[in] prclDest

Pointeur vers une structure RECTL qui définit la zone à modifier dans le système de coordonnées de la surface de destination. Ce rectangle est défini par deux points qui ne sont pas bien ordonnés, ce qui signifie que les coordonnées du deuxième point ne sont pas nécessairement supérieures à celles du premier point. Le rectangle décrit n’inclut pas les bords inférieur et droit. Cette fonction n’est jamais appelée avec un rectangle de destination vide.

Si le rectangle de destination n’est pas bien ordonné, EngStretchBlt le rend bien ordonné.

[in] prclSrc

Pointeur vers une structure RECTL qui définit la zone à copier, dans le système de coordonnées de la surface source. Le rectangle est mappé au rectangle défini par prclDest. Cette fonction ne reçoit jamais de rectangle source vide, et les points du rectangle source sont toujours bien ordonnés.

Le mappage est défini par prclSrc et prclDest. Les points spécifiés dans prclDest et prclSrc se trouvent sur des coordonnées entières, qui correspondent aux centres de pixels. Un rectangle défini par deux points de ce type est considéré comme un rectangle géométrique avec deux sommets dont les coordonnées sont les points donnés, mais avec 0,5 soustrait de chaque coordonnée. (Les structures POINTL sont une notation abrégée permettant de spécifier ces sommets de coordonnées fractionnaires.)

Les bords d’un rectangle ne croisent jamais un pixel, mais tournent autour d’un ensemble de pixels. Les pixels qui se trouvent à l’intérieur du rectangle sont ceux attendus pour un rectangle exclusif en bas à droite. EngStretchBlt mappe le rectangle source géométrique exactement sur le rectangle de destination géométrique.

pptlMask

Pointeur vers une structure POINTL qui définit le pixel dans le masque donné qui correspond au pixel supérieur gauche dans le rectangle source. Ce paramètre est ignoré si aucun masque n’est spécifié.

[in] iMode

Spécifie la façon dont les pixels sources sont combinés pour obtenir les pixels de sortie. Le mode HALFTONE est plus lent que les autres modes, mais produit des images de meilleure qualité.

Valeur Signification
BLACKONWHITE Lors d’un transfert de bloc de bits en réduction, les pixels doivent être combinés avec une opération BOOléenne 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 réduit, suffisamment de pixels doivent être ignorés pour éviter d’avoir à combiner des 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 à une opération BOOlean OR. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.

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

Cette fonction permet d’appliquer le même algorithme de halftoning aux bitmaps GDI et aux surfaces d’appareil.

Le pilote doit appeler EngStretchBlt s’il a crocheté DrvStretchBlt et qu’il est appelé pour faire quelque chose que le pilote ne prend pas en charge.

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

CLIPOBJ

DrvBitBlt

DrvStretchBlt

SURFOBJ

XLATEOBJ