Partager via


Régions de remplissage

Une application remplit l’intérieur d’une région en appelant la fonction FillRgn et en fournissant une poignée qui identifie un pinceau spécifique. Lorsqu’une application appelle FillRgn , le système remplit la région avec le pinceau à l’aide du mode de remplissage actuel pour le contexte d’appareil spécifié. Il existe deux modes de remplissage : alterner et enroulement. L’application peut définir le mode de remplissage pour un contexte d’appareil en appelant la fonction SetPolyFillMode . L’application peut récupérer le mode de remplissage actuel pour un contexte d’appareil en appelant la fonction GetPolyFillMode .

L’illustration suivante montre deux régions identiques : l’une remplie à l’aide d’un mode alternatif et l’autre en mode de reroulement.

illustration montrant deux étoiles à cinq branches : l’une remplie uniquement dans les points, l’autre entièrement remplie

Mode alternatif

Pour déterminer les pixels que le système met en surbrillance quand un mode alternatif est spécifié, effectuez le test suivant :

  1. Sélectionnez un pixel à l’intérieur de la région.
  2. Dessinez un rayon imaginaire, dans la direction X positive, de ce pixel vers l’infini.
  3. Chaque fois que le rayon croise une ligne limite, incrémentez une valeur de nombre.

Le système met en surbrillance le pixel si la valeur du nombre est un nombre impair.

Mode enroulement

Pour déterminer les pixels mis en évidence par le système lors de la spécification du mode d’enroulement, effectuez le test suivant :

  1. Déterminez la direction dans laquelle chaque ligne limite est dessinée.
  2. Sélectionnez un pixel à l’intérieur de la région.
  3. Dessinez un rayon imaginaire, dans la direction X positive, du pixel vers l’infini.
  4. Chaque fois que le rayon croise une ligne limite avec un composant y positif, incrémentez une valeur de nombre. Chaque fois que le rayon croise une ligne limite avec un composant y négatif, décrémentez la valeur du nombre.

Le système met en surbrillance le pixel si la valeur du nombre est différente de zéro.