Linjer
En linje är en uppsättning markerade bildpunkter på en rastervisning (eller en uppsättning punkter på en utskriven sida) som identifieras med två punkter: en startpunkt och en slutpunkt. Pixeln som finns vid startpunkten ingår alltid i raden och pixeln som finns vid slutpunkten undantas alltid. (Den här typen av linje kallas ibland inkluderande exklusiv.)
När ett program anropar någon av de linjeritande funktionerna, grafikenhetsgränssnittet (GDI) eller i vissa fall en enhetsdrivrutin avgör vilka pixlar som ska markeras. GDI är ett DLL -bibliotek (Dynamic Link Library) som bearbetar grafikfunktionsanrop från ett program och skickar dessa anrop till en enhetsdrivrutin. En enhetsdrivrutin är en DLL som tar emot indata från GDI, konverterar indata till enhetskommandon och skickar dessa kommandon till lämplig enhet. GDI använder en digital differentiell analysator (DDA) för att fastställa vilken uppsättning pixlar som definierar en linje. En DDA avgör uppsättningen bildpunkter genom att undersöka varje punkt på linjen och identifiera de bildpunkter på visningsytan (eller punkter på en utskriven sida) som motsvarar punkterna. Följande bild visar en linje, dess startpunkt, dess slutpunkt och pixlarna som markeras med hjälp av en enkel DDA.
Den enklaste och vanligaste DDA är Bresenham, eller inkrementell, DDA. En modifierad version av den här algoritmen ritar linjer i Windows. Den inkrementella DDA:en är känd för sin enkelhet, men den är också känd för sin felaktighet. Eftersom den avrundar till närmaste heltalsvärde kan den ibland inte representera den ursprungliga rad som begärdes av programmet. Den DDA som används av GDI avrundar inte till närmaste heltal. Det innebär att den nya DDA:n genererar utdata som ibland är mycket närmare den ursprungliga rad som programmet begär.
Not
Om ett program kräver radutdata som inte kan uppnås med den nya DDA:n kan det rita egna linjer genom att anropa funktionen LineDDA och tillhandahålla en privat DDA (LineDDAProc). Funktionen LineDDA drar dock linjer mycket långsammare än linjeritningsfunktionerna. Använd inte den här funktionen i ett program om hastigheten är ett primärt problem.
Ett program kan använda den nya DDA för att rita enkla linjer och flera anslutna linjesegment. Ett program kan rita en enda rad genom att anropa funktionen LineTo. Den här funktionen ritar en linje från den aktuella positionen upp till, men inte inklusive, en angiven slutpunkt. Ett program kan rita en serie anslutna linjesegment genom att anropa funktionen Polyline och tillhandahålla en matris med punkter som anger slutpunkten för varje linjesegment. Ett program kan rita flera, uppdelade serier av anslutna linjesegment genom att anropa funktionen PolyPolyline och tillhandahålla de slutpunkter som krävs.
Följande bild visar radutdata som skapats genom att anropa funktionerna LineTo, Polylineoch PolyPolyline.