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::D rawImage , 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 du coin 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::D rawImage .

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

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

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

Vous pouvez construire des objets Image à partir de différents formats de fichiers graphiques : BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF et ICON.

L’exemple suivant construit des objets Image à partir de différents 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’un objet Image, Metafile ou Bitmap existant. La méthode Clone est surchargée dans la classe Bitmap , et l’une des variantes a un paramètre 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. Ensuite, les deux images sont 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, ont produit la sortie suivante.

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