Linhas
Uma linha é um conjunto de pixels realçados em uma exibição raster (ou um conjunto de pontos em uma página impressa) identificados por dois pontos: um ponto inicial e um ponto final. O pixel localizado no ponto inicial é sempre incluído na linha e o pixel localizado no ponto final é sempre excluído. (Esse tipo de linha às vezes é chamado de inclusivo-exclusivo.)
Quando um aplicativo chama uma das funções de desenho de linha, a interface gráfica do dispositivo (GDI) ou, em alguns casos, um driver de dispositivo, determina quais pixels devem ser realçados. GDI é uma biblioteca de vínculo dinâmico (DLL) que processa chamadas de função gráfica de um aplicativo e passa essas chamadas para um driver de dispositivo. Um driver de dispositivo é uma DLL que recebe entrada do GDI, converte a entrada em comandos de dispositivo e passa esses comandos para o dispositivo apropriado. GDI usa um analisador diferencial digital (DDA) para determinar o conjunto de pixels que definem uma linha. Um DDA determina o conjunto de pixels examinando cada ponto na linha e identificando os pixels na superfície de exibição (ou pontos em uma página impressa) que correspondem aos pontos. A ilustração a seguir mostra uma linha, seu ponto inicial, seu ponto final e os pixels realçados usando um DDA simples.
O DDA mais simples e comum é o Bresenham, ou DDA incremental. Uma versão modificada deste algoritmo desenha linhas no Windows. O DDA incremental é conhecido por sua simplicidade, mas também é conhecido por sua imprecisão. Como ele arredonda para o valor inteiro mais próximo, às vezes não consegue representar a linha original solicitada pelo aplicativo. O DDA usado pelo GDI não arredonda para o número inteiro mais próximo. Como resultado, esse novo DDA produz uma saída que às vezes é muito mais próxima em aparência da linha original solicitada pelo aplicativo.
Observação
Se um aplicativo requer saída de linha que não pode ser alcançada com o novo DDA, ele pode desenhar suas próprias linhas chamando a função LineDDA e fornecendo um DDA privado (LineDDAProc). No entanto, a função LineDDA desenha linhas muito mais lentas do que as funções de desenho de linhas. Não utilize esta função numa aplicação se a velocidade for uma preocupação principal.
Um aplicativo pode usar o novo DDA para desenhar linhas únicas e vários segmentos de linha conectados. Um aplicativo pode desenhar uma única linha chamando a função LineTo. Esta função desenha uma linha da posição atual até, mas não incluindo, um ponto final especificado. Um aplicativo pode desenhar uma série de segmentos de linha conectados chamando a função Polyline, fornecendo uma matriz de pontos que especificam o ponto final de cada segmento de linha. Um aplicativo pode desenhar várias séries separadas de segmentos de linha conectados chamando a funçãoPolyPolyline, fornecendo os pontos finais necessários.
A ilustração a seguir mostra a saída de linha criada chamando o LineTo, Polylinee PolyPolyline funções.