Поделиться через


Метод Region::GetRegionScans(constMatrix*,Rect*,INT*) (gdiplusheaders.h)

Метод Region::GetRegionScans получает массив прямоугольников, приближенных к этой области. Область преобразуется указанной матрицей перед вычислением прямоугольников.

Синтаксис

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

Параметры

[in] matrix

Тип: const Matrix*

Указатель на объект Matrix , используемый для преобразования области.

[out] rects

Тип: Rect*

Указатель на массив объектов Rect , получающих прямоугольники.

[out] count

Тип: INT*

Указатель на INT, получающий значение, указывающее количество прямоугольников, приближенных к этой области. Значение допустимо, даже если rects является указателем NULL .

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления 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 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Проверка попаданий с помощью региона

Матрица

Rect

Регион

Region::GetRegionScansCount

Регионы

Состояние