Partager via


Dessin, positionnement et clonage d’images

Vous pouvez utiliser la classe Image pour charger et afficher des images raster (bitmaps) et des images vectorielles (métafichiers). Pour afficher une image, vous avez besoin d’un objet Graphics et d’un objet Image. L’objet Graphics fournit la méthode Graphics::DrawImage, qui reçoit l’adresse de l’objet Image en tant qu’argument.

L’exemple suivant construit un objet Image à partir du fichier Climber.jpg, puis affiche l’image. Le point de destination de l’angle supérieur gauche de l’image, (10, 10), est spécifié dans les deuxième et troisième paramètres de la méthode Graphics::DrawImage.

Image myImage(L"Climber.jpg");
myGraphics.DrawImage(&myImage, 10, 10);

Le code précédent, ainsi qu’un fichier particulier, Climber.jpg, a produit la sortie suivante.

capture d’écran d’une fenêtre contenant une photo

Vous pouvez créer des objets à partir d’un large éventail de formats de fichiers graphiques : BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF et ICON.

L’exemple suivant construit 'image objets à partir d’un large éventail de types de fichiers, puis affiche les images.

Image myBMP(L"SpaceCadet.bmp");
Image myEMF(L"Metafile1.emf");
Image myGIF(L"Soda.gif");
Image myJPEG(L"Mango.jpg");
Image myPNG(L"Flowers.png");
Image myTIFF(L"MS.tif");

myGraphics.DrawImage(&myBMP, 10, 10);
myGraphics.DrawImage(&myEMF, 220, 10);
myGraphics.DrawImage(&myGIF, 320, 10);
myGraphics.DrawImage(&myJPEG, 380, 10);
myGraphics.DrawImage(&myPNG, 150, 200);
myGraphics.DrawImage(&myTIFF, 300, 200);

La classe Image fournit une méthode Image::Clone que vous pouvez utiliser pour effectuer une copie d'une imageexistante, d'un métafichierou d'un objet bitmap . La méthode Clone est surchargée dans la classe Bitmap, et l’une des variations a un paramètre de rectangle source que vous pouvez utiliser pour spécifier la partie de l’image d’origine que vous souhaitez copier. L’exemple suivant crée un objet Bitmap en clonant la moitié supérieure d’un objet Bitmap existant. Les deux images sont ensuite affichées.

Bitmap* originalBitmap = new Bitmap(L"Spiral.png");
RectF sourceRect(
   0.0f,
   0.0f, 
   (REAL)(originalBitmap->GetWidth()), 
   (REAL)(originalBitmap->GetHeight())/2.0f);

Bitmap* secondBitmap = originalBitmap->Clone(sourceRect, PixelFormatDontCare);

myGraphics.DrawImage(originalBitmap, 10, 10);
myGraphics.DrawImage(secondBitmap, 100, 10);

Le code précédent, ainsi qu’un fichier particulier, Spiral.png, a produit la sortie suivante.

illustration d’une image, suivie de la moitié supérieure de l’image orignale