可以使用 Graphics 类的 DrawImage 方法来绘制和定位图像。 DrawImage 是一种重载的方法,因此可以通过多种方式提供参数。 Graphics::D rawImage 方法的一个变体接收 Image 对象的地址和 对 Rect 对象的引用。 矩形指定绘图操作的目标;也就是说,它指定要在其中绘制图像的矩形。 如果目标矩形的大小与原始图像的大小不同,则会缩放图像以适应目标矩形。 以下示例绘制同一个图像三次:一次没有缩放,一次使用扩展,一次使用压缩。

Bitmap myBitmap(L"Spiral.png");
Rect expansionRect(80, 10, 2 * myBitmap.GetWidth(), myBitmap.GetHeight());
Rect compressionRect(210, 10, myBitmap.GetWidth() / 2, 
   myBitmap.GetHeight() / 2);
myGraphics.DrawImage(&myBitmap, 10, 10);
myGraphics.DrawImage(&myBitmap, expansionRect);
myGraphics.DrawImage(&myBitmap, compressionRect);

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

Graphics::D rawImage 方法的某些变体具有源矩形参数和目标矩形参数。 源矩形指定将绘制的原始图像的部分。 目标矩形指定图像的绘制位置。 如果目标矩形的大小与源矩形的大小不同,则会缩放图像以适应目标矩形。

以下示例从文件Runner.jpg构造 Bitmap 对象。 整个图像在 0, 0) 时不进行缩放 (。 然后绘制图像的一小部分两次:一次使用压缩,一次使用扩展。

Bitmap myBitmap(L"Runner.jpg"); 
// The rectangle (in myBitmap) with upper-left corner (80, 70), 
// width 80, and height 45, encloses one of the runner's hands.
// Small destination rectangle for compressed hand.
Rect destRect1(200, 10, 20, 16);
// Large destination rectangle for expanded hand.
Rect destRect2(200, 40, 200, 160);
// Draw the original image at (0, 0).
myGraphics.DrawImage(&myBitmap, 0, 0);
// Draw the compressed hand.
myGraphics.DrawImage(
   &myBitmap, destRect1, 80, 70, 80, 45, UnitPixel);
// Draw the expanded hand. 
myGraphics.DrawImage(
   &myBitmap, destRect2, 80, 70, 80, 45, UnitPixel);

下图显示了未缩放的图像,以及压缩和展开的图像部分。