Desenhar, posicionar e clonar imagens

Você pode usar a classe Image para carregar e exibir imagens de varredura (bitmaps) e imagens de vetor (metarquivos). Para exibir uma imagem, você precisa de um objeto Graphics e um objeto Image . O objeto Graphics fornece o método Graphics::D rawImage , que recebe o endereço do objeto Image como um argumento.

O exemplo a seguir constrói um objeto Image do arquivo Climber.jpg e exibe a imagem. O ponto de destino do canto superior esquerdo da imagem (10, 10) é especificado no segundo e no terceiro parâmetros do método Graphics::D rawImage .

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

O código anterior, juntamente com um arquivo específico, Climber.jpg, produziu a saída a seguir.

captura de tela de uma janela que contém uma foto

Você pode construir objetos Image de uma variedade de formatos de arquivo gráfico: BMP, GIF, JPEG, Exif, PNG, TIFF, WMF, EMF e ICON.

O exemplo a seguir constrói objetos Image de uma variedade de tipos de arquivo e exibe as imagens.

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

A classe Image fornece um método Image::Clone que você pode usar para fazer uma cópia de um objeto Image, Metafile ou Bitmap existente. O método Clone está sobrecarregado na classe Bitmap e uma das variações tem um parâmetro de retângulo de origem que você pode usar para especificar a parte da imagem original que você deseja copiar. O exemplo a seguir cria um objeto Bitmap clonando a metade superior de um objeto Bitmap existente. Em seguida, ambas as imagens são exibidas.

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

O código anterior, juntamente com um arquivo específico, Spiral.png, produziu a saída a seguir.

ilustração de uma imagem, seguida pela metade superior da imagem orignal