Partager via


CRgn::CreatePolyPolygonRgn

Crée une zone qui se compose d'une série de polygones fermés.

BOOL CreatePolyPolygonRgn(
   LPPOINT lpPoints,
   LPINT lpPolyCounts,
   int nCount,
   int nPolyFillMode 
);

Paramètres

  • lpPoints
    Pointe vers un tableau de structures de POINT ou un tableau d'objets d' CPoint qui définit les vertex de polygones.Chaque polygone doit être explicitement fermé parce que le système ne les ferme pas automatiquement.Les polygones sont spécifiés à la suite.La structure de POINT a la forme suivante :

    typedef struct tagPOINT {

    int x;

    int y;

    } POINT;

  • lpPolyCounts
    Indique un tableau d'entiers.Le premier entier indique le nombre de vertex dans le premier polygone dans le tableau d' lpPoints , le deuxième entier indique le nombre de vertex dans le deuxième polygone, et ainsi de suite.

  • nCount
    Spécifie le nombre total d'entiers dans le tableau d' lpPolyCounts .

  • nPolyFillMode
    Spécifie le mode de remplissage de polygones.Cette valeur peut être ALTERNATE ou enroulement.

Valeur de retour

Une valeur différente de zéro si l'opération a réussi ; sinon 0.

Notes

La zone en résulte est stockée dans l'objet d' CRgn .

Les polygones peuvent être disjoignent, ils peuvent se chevaucher.

La taille d'une zone est limitée à 32.767 par 32.767 unités logiques ou ko à de mémoire, ce qui est plus petit.

Lorsque le mode de remplissage de polygones est ALTERNATE, le système qui remplit entre les côtés impairs et pairs polygon sur chaque ligne de numérisation.Autrement dit, le système qui remplit entre le premier et verso, entre le troisième et quatrième côté, et ainsi de suite.

Lorsque le mode de remplissage de polygones est enroulement, le système utilise la direction dans laquelle une illustration a été dessinée pour déterminer si remplir la zone.Chaque segment de ligne dans un polygone est dessiné dans un sens horaire ou anti-horaire.Chaque fois qu'une ligne imaginaire tracée d'une zone placé à l'extérieur d'une illustration traverse un segment de ligne horaire, un nombre est incrémenté.Lorsque la ligne traverse un segment de ligne dans le sens inverse des aiguilles d'une montre, le nombre est décrémenté.La zone est remplie si le nombre est différent de zéro lorsque la ligne atteint l'extérieur de l'illustration.

Lorsqu'une application a terminé d'utiliser une zone créée avec la fonction d' CreatePolyPolygonRgn , elle doit sélectionner la zone en dehors de le contexte de périphérique et utiliser la fonction membre de CGDIObject::DeleteObject pour la supprimer.

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CRgn, classe

Graphique de la hiérarchie

CRgn::CreatePolygonRgn

CDC::SetPolyFillMode

CreatePolyPolygonRgn