Compartir a través de


Dibujo, posicionamiento y clonación de imágenes

Puede usar la clase Image para cargar y mostrar imágenes ráster (mapas de bits) e imágenes vectoriales (metarchivos). Para mostrar una imagen, necesita un objeto Graphics y un objeto Image . El objeto Graphics proporciona el método Graphics::D rawImage , que recibe la dirección del objeto Image como argumento.

En el ejemplo siguiente se crea un objeto Image a partir del archivo Climber.jpg y, a continuación, se muestra la imagen. El punto de destino de la esquina superior izquierda de la imagen, (10, 10), se especifica en el segundo y tercer parámetro del método Graphics::D rawImage .

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

El código anterior, junto con un archivo determinado, Climber.jpg, generó la siguiente salida.

captura de pantalla de una ventana que contiene una foto

Puede construir objetos Image a partir de diversos formatos de archivo gráficos: BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF e ICON.

En el ejemplo siguiente se crean objetos Image a partir de una variedad de tipos de archivo y, a continuación, se muestran las imágenes.

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 clase Image proporciona un método Image::Clone que puede usar para realizar una copia de un objeto Image, Metafile o Bitmap existente. El método Clone se sobrecarga en la clase Bitmap y una de las variaciones tiene un parámetro source-rectangle que puede usar para especificar la parte de la imagen original que desea copiar. En el ejemplo siguiente se crea un objeto Bitmap mediante la clonación de la mitad superior de un objeto Bitmap existente. A continuación, se muestran ambas imágenes.

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);

El código anterior, junto con un archivo determinado, Spiral.png, generó la siguiente salida.

ilustración de una imagen, seguida de la mitad superior de la imagen orignal