绘制、定位和复制图像

可以使用 Image 类加载和显示 (位图) 和矢量图像 (图) 的光栅图像。 若要显示图像, 需要图形对象Image 对象。 Graphics 对象提供 Graphics::D rawImage 方法,该方法接收 Image 对象的地址作为参数。

以下示例从文件Climber.jpg构造 Image 对象,然后显示图像。 图像左上角的目标点( (10、10) )在 Graphics::D rawImage 方法的第二个和第三个参数中指定。

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

前面的代码以及特定文件Climber.jpg生成了以下输出。

screen shot of a window containing a photo

可以从各种图形文件格式构造 图像 对象:BMP、GIF、JPEG、Exif、PNG、TIFF、WMF、EMF 和 ICON。

以下示例从各种文件类型构造 Image 对象,然后显示图像。

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

Image 类提供 Image::Clone 方法,可用于创建现有 ImageMetafileBitmap 对象的副本。 Clone 方法在 Bitmap 类中重载,其中一个变体具有源矩形参数,可用于指定要复制的原始图像部分。 以下示例通过克隆现有 Bitmap 对象的上半部分来创建 Bitmap 对象。 然后显示这两个图像。

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

前面的代码以及特定文件Spiral.png生成了以下输出。

illustration of an image, followed by the top half of the orignal image