Compartilhar via


Suavização com linhas e curvas

Ao usar o Windows GDI+ para desenhar uma linha, você fornece o ponto inicial e o ponto final da linha, mas não precisa fornecer nenhuma informação sobre os pixels individuais na linha. O GDI+ funciona em conjunto com o software de driver de exibição para determinar quais pixels serão ativados para mostrar a linha em um dispositivo de vídeo específico.

Considere uma linha vermelha reta que vai do ponto (4, 2) até o ponto (16, 10). Suponha que o sistema de coordenadas tem sua origem no canto superior esquerdo e que a unidade de medida é o pixel. Suponha também que o eixo X aponta para a direita e o eixo Y aponta para baixo. A ilustração a seguir mostra uma exibição ampliada da linha vermelha desenhada em uma tela de fundo multicolorida.

ilustração mostrando pixels vermelhos sólidos em uma tela de fundo multicolorida

Observe que os pixels vermelhos usados para renderizar a linha são opacos. Não há pixels parcialmente transparentes envolvidos na exibição da linha. Esse tipo de renderização de linha dá à linha uma aparência irregular, e a linha se parece um pouco com uma escada. Essa técnica de representar uma linha com uma escada é chamada de serrilhado; a escada é um alias para a linha teórica.

Uma técnica mais sofisticada para renderizar uma linha envolve o uso de pixels parcialmente transparentes, juntamente com pixels vermelhos puros. Os pixels são definidos como vermelho puro ou para alguma mistura de vermelho e a cor da tela de fundo, dependendo de quão próximos eles estão da linha. Esse tipo de renderização é chamado de suavização e resulta em uma linha que o olho humano percebe como mais suave. A ilustração a seguir mostra como determinados pixels são mesclados com a tela de fundo para produzir uma linha suavizada.

ilustração mostrando pixels que são tons de vermelho na mesma tela de fundo

A suavização (suavização) também pode ser aplicada a curvas. A ilustração a seguir mostra uma exibição ampliada de uma elipse suavizada.

ilustração de uma elipse composta por diferentes tons de pixels azuis em um plano de fundo branco

A ilustração a seguir mostra a mesma elipse em seu tamanho real, uma vez sem suavização e outra com suavização.

captura de tela de duas reticências: aquela com suavização aparece noticavelmente mais suave

Para desenhar linhas e curvas que usam suavização, crie um objeto Graphics e passe SmoothingModeAntiAlias para seu método Graphics::SetSmoothingMode . Em seguida, chame um dos métodos de desenho do mesmo objeto Graphics .

myGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
myGraphics.DrawLine(&myPen, 0, 0, 12, 8);

SmoothingModeAntiAlias é um elemento da enumeração SmoothingMode .