Lijnen
Een lijn is een set gemarkeerde pixels op een rasterweergave (of een set punten op een afgedrukte pagina) die wordt geïdentificeerd door twee punten: een beginpunt en een eindpunt. De pixel die zich op het beginpunt bevindt, wordt altijd opgenomen in de lijn en de pixel die zich op het eindpunt bevindt, wordt altijd uitgesloten. (Dit soort lijn wordt ook wel inclusief-exclusief genoemd.)
Wanneer een toepassing een van de functies voor lijntekening, grafische apparaatinterface (GDI) of in sommige gevallen een apparaatstuurprogramma aanroept, bepaalt u welke pixels moeten worden gemarkeerd. GDI is een DLL (Dynamic Link Library) die grafische functieaanroepen van een toepassing verwerkt en die aanroepen doorgeeft aan een apparaatstuurprogramma. Een apparaatstuurprogramma is een DLL die invoer van GDI ontvangt, de invoer converteert naar apparaatopdrachten en deze opdrachten doorgeeft aan het juiste apparaat. GDI maakt gebruik van een digitale differentiële analyse (DDA) om de set pixels te bepalen die een lijn definiëren. Een DDA bepaalt de set pixels door elk punt op de lijn te bekijken en die pixels te identificeren op het weergaveoppervlak (of punten op een afgedrukte pagina) die overeenkomen met de punten. In de volgende afbeelding ziet u een lijn, het beginpunt, het eindpunt en de pixels die zijn gemarkeerd met behulp van een eenvoudige DDA.
De eenvoudigste en meest voorkomende DDA is de Bresenham, of incrementeel, DDA. Een gewijzigde versie van dit algoritme tekent lijnen in Windows. De incrementele DDA wordt opgemerkt voor zijn eenvoud, maar het wordt ook opgemerkt voor de onnauwkeurigheid ervan. Omdat de waarde wordt afgerond op het dichtstbijzijnde gehele getal, kan de oorspronkelijke regel die door de toepassing is aangevraagd, soms niet worden weergegeven. De DDA die door GDI wordt gebruikt, wordt niet afgerond op het dichtstbijzijnde gehele getal. Hierdoor produceert deze nieuwe DDA uitvoer die soms veel dichter bij de oorspronkelijke regel ligt die door de toepassing wordt aangevraagd.
Notitie
Als voor een toepassing regeluitvoer is vereist die niet kan worden bereikt met de nieuwe DDA, kan deze zijn eigen lijnen tekenen door de functie LineDDA- aan te roepen en een persoonlijke DDA (LineDDAProc-) op te geven. De functie LineDDA tekent echter veel langzamer dan de lijntekeningfuncties. Gebruik deze functie niet binnen een toepassing als snelheid een belangrijk probleem is.
Een toepassing kan de nieuwe DDA gebruiken om één lijn en meerdere verbonden lijnsegmenten te tekenen. Een toepassing kan één lijn tekenen door de functie LineTo aan te roepen. Met deze functie wordt een lijn van de huidige positie tot, maar niet inclusief, een opgegeven eindpunt opgehaald. Een toepassing kan een reeks verbonden lijnsegmenten tekenen door de functie Polyline aan te roepen, waarbij een matrix met punten wordt opgegeven waarmee het eindpunt van elk lijnsegment wordt opgegeven. Een toepassing kan meerdere, niet-aaneengesloten reeks verbonden lijnsegmenten tekenen door de polypolyline- functie aan te roepen, waarbij de vereiste eindpunten worden opgegeven.
In de volgende afbeelding ziet u de regeluitvoer die is gemaakt door de functies LineTo, Polylineen PolyPolyline- aan te roepen.