Region::GetRegionScans (constMatrix*,Rect*,INT*) 方法 (gdiplusheaders.h)

Region::GetRegionScans 方法获取与该区域近似的矩形数组。 在计算矩形之前,区域由指定的矩阵进行转换。

语法

Status GetRegionScans(
  [in]  const Matrix *matrix,
  [out] Rect         *rects,
  [out] INT          *count
);

parameters

[in] matrix

类型: const Matrix*

指向用于转换区域的 Matrix 对象的指针。

[out] rects

类型: Rect*

指向接收矩形的 Rect 对象的数组的指针。

[out] count

类型: INT*

指向 INT 的指针,该 INT 接收一个值,该值指示与该区域近似的矩形数。 即使 rectsNULL 指针,该值也有效。

返回值

类型: 状态

如果方法成功,则返回 Ok,这是 Status 枚举的元素。

如果 方法失败,它将返回 Status 枚举的其他元素之一。

注解

可以先使用 Region::GetRegionScansCount 方法来确定矩形数。 然后,可以分配大小正确的缓冲区,并将 rects 参数设置为指向缓冲区。

示例

以下示例从路径创建一个区域,并获取一组与该区域近似的矩形。 然后,代码绘制每个矩形。

VOID Example_GetRegionScansRect(HDC hdc)
{
   Graphics graphics(hdc);

   SolidBrush solidBrush(Color(255, 255, 0, 0));
   Pen pen(Color(255, 0, 0, 0));
   GraphicsPath path;
   Matrix matrix;
   Rect* rects = NULL;
   INT count = 0;  

   // Create a region from a path.
   path.AddEllipse(10, 10, 50, 300);
   Region pathRegion(&path);    
   graphics.FillRegion(&solidBrush, &pathRegion);

   // Get the rectangles.
   graphics.GetTransform(&matrix);
   count = pathRegion.GetRegionScansCount(&matrix);
   rects = (Rect*)malloc(count*sizeof(Rect));
   pathRegion.GetRegionScans(&matrix, rects, &count);  

   // Draw the rectangles.
   for(INT j = 0; j < count; ++j)
      graphics.DrawRectangle(&pen, rects[j]);

   free(rects);
}

要求

   
最低受支持的客户端 Windows XP、Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 gdiplusheaders.h (包括 Gdiplus.h)
Library Gdiplus.lib
DLL Gdiplus.dll

另请参阅

使用区域进行命中测试

矩阵

Rect

区域

Region::GetRegionScansCount

区域

Status