Condividi tramite


Linee

Una linea è un set di pixel evidenziati in una visualizzazione raster (o un set di punti in una pagina stampata) identificato da due punti: un punto iniziale e un punto finale. Il pixel che si trova nel punto iniziale è sempre incluso nella riga e il pixel che si trova nel punto finale viene sempre escluso. Questo tipo di riga è talvolta chiamato inclusivo-esclusivo.

Quando un'applicazione chiama una delle funzioni di disegno a linee, l'interfaccia GDI (Graphics Device Interface) o in alcuni casi un driver di dispositivo, determina quali pixel devono essere evidenziati. GDI è una libreria di collegamento dinamico (DLL) che elabora le chiamate di funzioni grafiche da un'applicazione e passa tali chiamate a un driver di dispositivo. Un driver di dispositivo è una DLL che riceve l'input da GDI, converte l'input in comandi del dispositivo e passa tali comandi al dispositivo appropriato. GDI usa un analizzatore differenziale digitale (DDA) per determinare il set di pixel che definiscono una linea. Una DDA determina il set di pixel esaminando ogni punto sulla linea e identificando tali pixel sulla superficie di visualizzazione (o punti in una pagina stampata) che corrispondono ai punti. La figura seguente mostra una linea, il punto iniziale, il punto finale e i pixel evidenziati usando una semplice DDA.

illustrazione che mostra una griglia di pixel, punti iniziali e finali, una linea e un'ombreggiatura sui pixel che si trovano lungo la linea

La DDA più semplice e comune è la Bresenham, o incrementale, DDA. Una versione modificata di questo algoritmo disegna linee in Windows. La DDA incrementale è nota per la sua semplicità, ma è anche nota per la sua inesattezza. Poiché arrotonda al valore intero più vicino, talvolta non riesce a rappresentare la riga originale richiesta dall'applicazione. La DDA usata da GDI non arrotonda all'intero più vicino. Di conseguenza, questa nuova DDA produce output che a volte è molto più vicino alla riga originale richiesta dall'applicazione.

Nota

Se un'applicazione richiede un output di riga che non può essere ottenuto con la nuova DDA, può disegnare le proprie linee chiamando la funzione LineDDA e fornendo una DDA privata (LineDDAProc). Tuttavia, la funzione LineDDA disegna linee molto più lente rispetto alle funzioni di disegno a linee. Non usare questa funzione all'interno di un'applicazione se la velocità è un problema principale.

 

Un'applicazione può usare la nuova DDA per disegnare singole linee e più segmenti di linea collegati. Un'applicazione può disegnare una singola riga chiamando la funzione LineTo . Questa funzione disegna una linea dalla posizione corrente fino a, ma non include, un punto finale specificato. Un'applicazione può disegnare una serie di segmenti di linea connessi chiamando la funzione Polyline , fornendo una matrice di punti che specificano il punto finale di ogni segmento di linea. Un'applicazione può disegnare più serie non contigue di segmenti di linea connessi chiamando la funzione PolyPolyline , fornendo i punti finali necessari.

La figura seguente mostra l'output della riga creato chiamando le funzioni LineTo, Polyline e PolyPolyline .

illustrazione che mostra una linea retta, una casella a forma di