裁剪和缩放 GDI+ 图像
Graphics 类提供了几种 DrawImage 方法,其中一些方法具有可用于裁剪和缩放图像的源和目标矩形参数。
以下示例从 文件Apple.gif构造 Image 对象。 该代码以原始大小绘制整个苹果图像。 然后,代码调用 Graphics 对象的 DrawImage 方法,以在比原始苹果图像更大的目标矩形中绘制苹果图像的一部分。
DrawImage 方法通过查看由第三个、第四个、第五个和第六个参数指定的源矩形来确定要绘制苹果的哪个部分。 在本例中,苹果被裁切为其宽度的 75% 和高度的 75%。
DrawImage 方法通过查看目标矩形(由第二个参数指定)确定裁剪的苹果的绘制位置以及裁剪后的苹果大小。 在本例中,目标矩形比原始图像宽 30%,高 30%。
Image image(L"Apple.gif");
UINT width = image.GetWidth();
UINT height = image.GetHeight();
// Make the destination rectangle 30 percent wider and
// 30 percent taller than the original image.
// Put the upper-left corner of the destination
// rectangle at (150, 20).
Rect destinationRect(150, 20, 1.3 * width, 1.3 * height);
// Draw the image unaltered with its upper-left corner at (0, 0).
graphics.DrawImage(&image, 0, 0);
// Draw a portion of the image. Scale that portion of the image
// so that it fills the destination rectangle.
graphics.DrawImage(
&image,
destinationRect,
0, 0, // upper-left corner of source rectangle
0.75 * width, // width of source rectangle
0.75 * height, // height of source rectangle
UnitPixel);
下图显示了原始的苹果和经过缩放、剪切的苹果。