Condividi tramite


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

Il metodo Region::GetRegionScans ottiene una matrice di rettangoli che approssimano questa area. L'area viene trasformata da una matrice specificata prima che vengano calcolati i rettangoli.

Sintassi

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

Parametri

[in] matrix

Tipo: matrice* const

Puntatore a un oggetto Matrix utilizzato per trasformare l'area.

[out] rects

Tipo: Rect*

Puntatore a una matrice di oggetti Rect che ricevono i rettangoli.

[out] count

Tipo: INT*

Puntatore a un INT che riceve un valore che indica il numero di rettangoli che approssimano questa area. Il valore è valido anche se rects è un puntatore NULL .

Valore restituito

Tipo: Stato

Se il metodo ha esito positivo, restituisce Ok, ovvero un elemento dell'enumerazione Status .

Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .

Commenti

Il metodo Region::GetRegionScansCount può essere usato prima per determinare il numero di rettangoli. È quindi possibile allocare un buffer che corrisponde alla dimensione corretta e impostare il parametro rects per puntare al buffer.

Esempio

Nell'esempio seguente viene creata un'area da un percorso e viene ottenuto un set di rettangoli che approssimano l'area. Il codice disegna quindi ognuno dei rettangoli.

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);
}

Requisiti

   
Client minimo supportato Windows XP, Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione gdiplusheaders.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Hit Testing con un'area

Matrice

Rect

Area

Region::GetRegionScansCount

Aree

Status