Compartilhar via


Regiões de Preenchimento

Um aplicativo preenche o interior de uma região chamando a função FillRgn e fornecendo um identificador que identifica um pincel específico. Quando um aplicativo chama FillRgn , o sistema preenche a região com o pincel usando o modo de preenchimento atual para o contexto do dispositivo especificado. Há dois modos de preenchimento: alternativo e sinuoso. O aplicativo pode definir o modo de preenchimento para um contexto de dispositivo chamando a função SetPolyFillMode . O aplicativo pode recuperar o modo de preenchimento atual para um contexto de dispositivo chamando a função GetPolyFillMode .

A ilustração a seguir mostra duas regiões idênticas: uma preenchida usando o modo alternativo e a outra preenchida usando o modo de enrolamento.

ilustração mostrando duas estrelas de cinco pontas: uma preenchida apenas nos pontos, a outra preenchida completamente

Modo alternativo

Para determinar quais pixels o sistema realça quando o modo alternativo é especificado, execute o seguinte teste:

  1. Selecione um pixel no interior da região.
  2. Desenhe um raio imaginário, na direção x positiva, desse pixel em direção ao infinito.
  3. Sempre que o raio cruza uma linha de limite, incremente um valor de contagem.

O sistema realçará o pixel se o valor de contagem for um número ímpar.

Modo de enrolamento

Para determinar quais pixels o sistema realça quando o modo de enrolamento é especificado, execute o seguinte teste:

  1. Determine a direção na qual cada linha de limite é desenhada.
  2. Selecione um pixel no interior da região.
  3. Desenhe um raio imaginário, na direção x positiva, do pixel em direção ao infinito.
  4. Sempre que o raio cruza uma linha de limite com um componente y positivo, incremente um valor de contagem. Sempre que o raio cruza uma linha de limite com um componente y negativo, decremente o valor de contagem.

O sistema realçará o pixel se o valor de contagem for diferente de zero.