CRgn::CreatePolygonRgn

crea una región poligonal.

BOOL CreatePolygonRgn(
   LPPOINT lpPoints,
   int nCount,
   int nMode 
);

Parámetros

  • lpPoints
    Señala a una matriz de estructuras de puntos o a una matriz de los objetos de CPoint .Cada estructura especifica la coordenada x y la coordenada y de un vértice del polígono.La estructura de puntos tiene el siguiente formato:

    typedef struct tagPOINT {

    int x;

    int y;

    } POINT;

  • nCount
    Especifica el número de estructuras de puntos u objetos de CPoint en la matriz indicada por lpPoints.

  • nMode
    Especifica el modo de relleno para la región.este parámetro puede ser Alternar o WINDING.

Valor devuelto

Distinto de cero si la operación se realizó correctamente; si no 0.

Comentarios

El sistema cierra el polígono automáticamente en caso necesario, debe dibujar una línea de vértices pasado al primero.la región resultante se almacena en el objeto de CRgn .

El tamaño de una región está limitado a 32.767 por 32.767 unidades lógicas o a de memoria de, lo que sea menor.

Cuando el modo de polígono-relleno es Alternar, el sistema rellenará el área entre los lados con números impares y pares de polígono en cada línea de análisis.Es decir, el sistema rellenará el área entre el primer y segundo lado, entre el tercero y cuarto lado, y así sucesivamente.

Cuando el modo de polígono-relleno es WINDING, el sistema utiliza la dirección en la que una figura se dibuja para determinar si rellenar un área.Cada segmento de línea en un polígono se dibuja en una dirección a la derecha o a la izquierda.Siempre que una línea imaginaria extraída de un área incluye el fuera de una figura pasa a través de un segmento de línea a la derecha, se incrementa un recuento.cuando la línea pasa a través de un segmento de línea a la izquierda, se disminuye el recuento.Se rellenará el área si el número es distinto de cero cuando la línea alcanza fuera de la figura.

Cuando una aplicación ha terminado de utilizar una región creada con la función de CreatePolygonRgn , debe seleccionar la región fuera del contexto de dispositivo y utilizar la función de DeleteObject para quitarlo.

Ejemplo

CRgn   rgnA, rgnB;

CPoint ptVertex[5];

ptVertex[0].x = 180;
ptVertex[0].y = 80;
ptVertex[1].x = 100;
ptVertex[1].y = 160;
ptVertex[2].x = 120;
ptVertex[2].y = 260;
ptVertex[3].x = 240;
ptVertex[3].y = 260;
ptVertex[4].x = 260;
ptVertex[4].y = 160;

VERIFY(rgnA.CreatePolygonRgn( ptVertex, 5, ALTERNATE));

CRect rectRgnBox;
int nRgnBoxResult = rgnA.GetRgnBox( &rectRgnBox );
ASSERT( nRgnBoxResult != ERROR && nRgnBoxResult != NULLREGION );

CBrush brA, brB;
VERIFY(brA.CreateSolidBrush( RGB(255, 0, 0) ));  // rgnA Red
VERIFY(pDC->FrameRgn( &rgnA, &brA, 2, 2 ));
VERIFY(brB.CreateSolidBrush( RGB(0, 0, 255) ));  // Blue
rectRgnBox.InflateRect(3,3);
pDC->FrameRect( &rectRgnBox, &brB );

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase de CRgn

Gráfico de jerarquía

CRgn::CreatePolyPolygonRgn

CreatePolygonRgn