Compartilhar via


Suavização com linhas e curvas

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

Atribuição de alias

Considere a linha reta vermelha 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.

Line, no antialiasing

Os pixels vermelhos usados para renderizar a linha são opacos. Não existem pixels parcialmente transparentes na linha. Esse tipo de processamento de linha dá a esta uma aparência denteada, fazendo com que se pareça 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.

Suavização

Uma técnica mais sofisticada para renderizar uma linha envolve o uso de pixels parcialmente transparentes junto com pixels opacos. Pixels são definidas como vermelho puro ou como uma mistura de vermelho e a cor da tela de fundo, dependendo da sua proximidade 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.

Antialiasing a Line

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

Antialiasing Curves

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

Antialiasing example

Para desenhar linhas e curvas que usam suavização de serrilhado, crie uma instância da Graphics classe e defina sua SmoothingMode propriedade como AntiAlias ou HighQuality. Em seguida, chame um dos métodos de desenho dessa mesma Graphics classe.

myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)

Confira também