可以使用
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);
下图显示了未缩放的图像,以及压缩和展开的图像部分。