Fonction SetDIBitsToDevice (wingdi.h)
La fonction SetDIBitsToDevice définit les pixels dans le rectangle spécifié sur l’appareil associé au contexte de l’appareil de destination à l’aide des données de couleur d’une image DIB, JPEG ou PNG.
Syntaxe
int SetDIBitsToDevice(
[in] HDC hdc,
[in] int xDest,
[in] int yDest,
[in] DWORD w,
[in] DWORD h,
[in] int xSrc,
[in] int ySrc,
[in] UINT StartScan,
[in] UINT cLines,
[in] const VOID *lpvBits,
[in] const BITMAPINFO *lpbmi,
[in] UINT ColorUse
);
Paramètres
[in] hdc
Handle dans le contexte de l’appareil.
[in] xDest
Coordonnée x, en unités logiques, du coin supérieur gauche du rectangle de destination.
[in] yDest
Coordonnée y, en unités logiques, du coin supérieur gauche du rectangle de destination.
[in] w
Largeur, en unités logiques, de l’image.
[in] h
Hauteur, en unités logiques, de l’image.
[in] xSrc
Coordonnée x, en unités logiques, du coin inférieur gauche de l’image.
[in] ySrc
Coordonnée y, en unités logiques, du coin inférieur gauche de l’image.
[in] StartScan
Ligne de balayage de départ dans l’image.
[in] cLines
Nombre de lignes d’analyse DIB contenues dans le tableau pointé vers le paramètre lpvBits .
[in] lpvBits
Pointeur vers les données de couleur stockées sous forme de tableau d’octets. Pour plus d'informations, consultez la section Notes qui suit.
[in] lpbmi
Pointeur vers une structure BITMAPINFO qui contient des informations sur la DIB.
[in] ColorUse
Indique si le membre bmiColors de la structure BITMAPINFO contient des valeurs ou des index rouges, verts, bleus (RVB) explicites dans une palette. Pour plus d'informations, consultez la section Notes qui suit.
Le paramètre fuColorUse doit être l’une des valeurs suivantes.
Valeur retournée
Si la fonction réussit, la valeur de retour correspond au nombre de lignes d’analyse définies.
Si aucune ligne d’analyse est définie (par exemple, lorsque dwHeight a la valeur 0) ou si la fonction échoue, la fonction retourne zéro.
Si le pilote ne peut pas prendre en charge l’image de fichier JPEG ou PNG transmise à SetDIBitsToDevice, la fonction échoue et retourne GDI_ERROR. En cas d’échec, l’application doit se rabattre sur sa propre prise en charge JPEG ou PNG pour décompresser l’image dans une bitmap, puis passer la bitmap à SetDIBitsToDevice.
Remarques
Une vitesse de dessin bitmap optimale est obtenue lorsque les bits bitmap sont indexés dans la palette système.
Les applications peuvent récupérer les couleurs et les index de palette système en appelant la fonction GetSystemPaletteEntries . Une fois les couleurs et les index récupérés, l’application peut créer la DIB. Pour plus d’informations sur la palette système, consultez Couleurs.
Les lignes d’analyse doivent être alignées sur un DWORD , à l’exception des bitmaps compressées en RLE.
L’origine d’une DIB de bas en haut est le coin inférieur gauche de la bitmap ; l’origine d’un DIB en haut vers le bas est le coin supérieur gauche.
Pour réduire la quantité de mémoire nécessaire pour définir des bits d’une DIB volumineuse sur une surface d’appareil, une application peut regrouper la sortie en appelant à plusieurs reprises SetDIBitsToDevice, en plaçant une partie différente de l’image bitmap dans le tableau lpvBits à chaque fois. Les valeurs des paramètres uStartScan et cScanLines identifient la partie de l’image bitmap contenue dans le tableau lpvBits .
La fonction SetDIBitsToDevice retourne une erreur si elle est appelée par un processus qui s’exécute en arrière-plan pendant qu’une session MS-DOS en plein écran s’exécute au premier plan.
- Si le membre biCompression de BITMAPINFOHEADER est BI_JPEG ou BI_PNG, lpvBits pointe vers une mémoire tampon contenant une image JPEG ou PNG. Le membre biSizeImage de spécifie la taille de la mémoire tampon. Le paramètre fuColorUse doit être défini sur DIB_RGB_COLORS.
- Pour garantir un pool de métafichiers approprié lors de l’impression, les applications doivent appeler l’échappement CHECKJPEGFORMAT ou CHECKPNGFORMAT pour vérifier que l’imprimante reconnaît l’image JPEG ou PNG, respectivement, avant d’appeler SetDIBitsToDevice.
Exemples
Pour obtenir un exemple, consultez Test d’une imprimante pour la prise en charge JPEG ou PNG.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wingdi.h (inclure Windows.h) |
Bibliothèque | Gdi32.lib |
DLL | Gdi32.dll |