Linhas

Uma linha é um conjunto de pixels realçados em uma exibição de raster (ou um conjunto de pontos em uma página impressa) identificado por dois pontos: um ponto de partida e um ponto final. O pixel localizado no ponto de partida é sempre incluído na linha e o pixel localizado no ponto final é sempre excluído. (Esse tipo de linha às vezes é chamado de exclusivo inclusivo.)

Quando um aplicativo chama uma das funções de desenho de linha, a GDI (interface gráfica do dispositivo) ou, em alguns casos, um driver de dispositivo, determina quais pixels devem ser realçados. A GDI é uma DLL (biblioteca de vínculo dinâmico) 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 de GDI, converte a entrada em comandos de dispositivo e passa esses comandos para o dispositivo apropriado. A GDI usa um DDA (analisador diferencial digital) para determinar o conjunto de pixels que definem uma linha. Um DDA determina o conjunto de pixels examinando cada ponto na linha e identificando esses 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 de partida, seu ponto final e os pixels realçados usando um DDA simples.

ilustração mostrando uma grade de pixels, pontos iniciais e finais, uma linha e sombreamento nos pixels que estão ao longo da linha

O DDA mais simples e comum é o DDA bresenham ou incremental. Uma versão modificada desse algoritmo desenha linhas no Windows. O DDA incremental é observado por sua simplicidade, mas também é observado por sua imprecisão. Como ele arredonda para o valor inteiro mais próximo, às vezes não representa a linha original solicitada pelo aplicativo. O DDA usado pelo GDI não arredonda para o inteiro mais próximo. Como resultado, esse novo DDA produz uma saída que às vezes está muito mais próxima da aparência da linha original solicitada pelo aplicativo.

Observação

Se um aplicativo exigir saída de linha que não pode ser obtida com o novo DDA, ele poderá 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 linha. Não use essa função em um aplicativo 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 . Essa 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 conectada 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 não contíguas de segmentos de linha conectados chamando a função PolyPolyline , fornecendo os pontos finais necessários.

A ilustração a seguir mostra a saída de linha criada chamando as funções LineTo, Polyline e PolyPolyline .

ilustração mostrando uma linha reta, uma caixa em forma de