Líneas

Una línea es un conjunto de píxeles resaltados en una presentación ráster (o un conjunto de puntos en una página impresa) identificada por dos puntos: un punto inicial y un punto final. El píxel ubicado en el punto inicial siempre se incluye en la línea y el píxel ubicado en el punto final siempre se excluye. (Este tipo de línea se denomina a veces inclusivo-exclusivo).

Cuando una aplicación llama a una de las funciones de dibujo de línea, la interfaz de dispositivo gráfico (GDI) o, en algunos casos, un controlador de dispositivo determina qué píxeles deben resaltarse. GDI es una biblioteca de vínculos dinámicos (DLL) que procesa las llamadas a funciones gráficas desde una aplicación y pasa esas llamadas a un controlador de dispositivo. Un controlador de dispositivo es un archivo DLL que recibe la entrada de GDI, convierte la entrada en los comandos del dispositivo y pasa esos comandos al dispositivo adecuado. GDI usa un analizador diferencial digital (DDA) para determinar el conjunto de píxeles que definen una línea. Un DDA determina el conjunto de píxeles examinando cada punto de la línea e identificando esos píxeles en la superficie de presentación (o puntos de una página impresa) que corresponden a los puntos. En la ilustración siguiente se muestra una línea, su punto inicial, su punto final y los píxeles resaltados mediante un DDA simple.

ilustración que muestra una cuadrícula de píxeles, puntos iniciales y finales, una línea y sombreado en los píxeles que se encuentran a lo largo de la línea

El DDA más sencillo y más común es Bresenham, o DDA incremental. Una versión modificada de este algoritmo dibuja líneas en Windows. El DDA incremental se destaca por su simplicidad, pero también se destaca por su inexactitud. Dado que se redondea al valor entero más cercano, a veces no puede representar la línea original solicitada por la aplicación. El DDA utilizado por GDI no se redondea al entero más cercano. Como resultado, este nuevo DDA genera una salida que a veces es mucho más cercana en apariencia a la línea original solicitada por la aplicación.

Nota

Si una aplicación requiere una salida de línea que no se puede lograr con el nuevo DDA, puede dibujar sus propias líneas llamando a la función LineDDA y proporcionando un DDA privado (LineDDAProc). Sin embargo, la función LineDDA dibuja líneas mucho más lentas que las funciones de dibujo de línea. No use esta función dentro de una aplicación si la velocidad es una preocupación principal.

 

Una aplicación puede usar el nuevo DDA para dibujar líneas únicas y varios segmentos de línea conectados. Una aplicación puede dibujar una sola línea llamando a la función LineTo . Esta función dibuja una línea de la posición actual hasta un punto final especificado, pero no incluido. Una aplicación puede dibujar una serie de segmentos de línea conectados llamando a la función Polyline , proporcionando una matriz de puntos que especifican el punto final de cada segmento de línea. Una aplicación puede dibujar varias series separadas de segmentos de línea conectados mediante una llamada a la función PolyPolyline , proporcionando los puntos finales necesarios.

En la ilustración siguiente se muestra la salida de línea creada mediante una llamada a las funciones LineTo, Polyline y PolyPolyline .

ilustración que muestra una línea recta, un cuadro con forma