Image::GetBounds 方法 (gdiplusheaders.h)
Image::GetBounds 方法获取此图像的边界矩形。
语法
Status GetBounds(
[out] RectF *srcRect,
[out] Unit *srcUnit
);
参数
[out] srcRect
类型: RectF*
指向接收边界矩形的 RectF 对象的指针。
[out] srcUnit
类型: 单位*
指向一个变量的指针,该变量接收 Unit 枚举的元素,该元素指示边界矩形的度量单位。
返回值
类型: 状态
如果方法成功,则返回 Ok,这是 Status 枚举的元素。
如果 方法失败,它将返回 Status 枚举的其他元素之一。
注解
图元文件边框的左上角不一定 (0, 0) 。 左上角的坐标可以是负数,也可以是正值,具体取决于在录制图元文件期间发出的绘图命令。 例如,假设图元文件由使用以下 语句记录的单个椭圆组成:
DrawEllipse(&pen, 200, 100, 80, 40);
然后,图元文件边界矩形将包围该椭圆。 边框的左上角不会 (0, 0) ;相反,这将是一个接近 (200,100) 的点。
示例
以下示例基于图元文件创建 Image 对象,然后绘制图像。 接下来,代码调用 Image::GetBounds 方法以获取图像的边框。 该代码尝试两次显示 75% 的图像。 第一次尝试失败,因为它指定了源矩形左上角 (0, 0) 。 第二次尝试成功,因为它使用 Image::GetBounds 返回的 X 和 Y 数据成员来指定源矩形的左上角。
VOID Example_GetBounds(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"SampleMetafile2.emf");
graphics.DrawImage(&image, 0, 0);
// Get the bounding rectangle for the image (metafile).
RectF boundsRect;
Unit unit;
image.GetBounds(&boundsRect, &unit);
// Attempt to draw 75 percent of the image.
// Less than 75 percent of the image will be visible because the
// upper-left corner of the image's bounding rectangle is not (0, 0).
RectF dstRect(250.0f, 0.0f, 100.0f, 50.0f);
graphics.DrawImage(
&image,
dstRect, // destination rectangle
0.0f, 0.0f, // upper-left corner of source rectangle
0.75f*boundsRect.Width, // width of source rectangle
boundsRect.Height, // height of source rectangle
UnitPixel);
// Draw 75 percent of the image.
dstRect.Y = 80.0f;
graphics.DrawImage(
&image,
dstRect, // destination rectangle
boundsRect.X, boundsRect.Y, // upper-left corner of source rectangle
0.75f*boundsRect.Width, // width of source rectangle
boundsRect.Height, // height of source rectangle
UnitPixel);
}
上述代码以及特定文件SampleMetafile2.emf生成了以下输出。 请注意,第一次尝试 (右上角) 绘制 75% 的图像仅显示约 30% 的图像。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP、Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | gdiplusheaders.h (包括 Gdiplus.h) |
Library | Gdiplus.lib |
DLL | Gdiplus.dll |