IKT i praksis - Pascal |
|
Pascal. Å teikne linjerPascal har ein del ferdige funksjonar for å teikne linjer på teikneflata (canvas). Desse blir omtala i dette avsnittet. Linjene blir plasserte på teikneflata (canvas) ved hjelp av dei vanlege koordinata som er omtalte i kapitlet generelt. Strekbreidde, strekstil og strekfarge blir styrt av innstilingane for pen. I dei tilfella der teikninga inneheld fyll, blir denne bestemt med verdiane sette for brush.
Å teikne rette strekarKommandoen for å teikne ei linje er Dersom pennen alt er plassert på canvas, kan ein halde fram teikninga frå denne staden med
kommandoen lineTo(x,y). Det er då nok å oppgi det nye endepunktet
for streken. Startpunktet vil vere der pennen står, altså sluttpunktet for den førre streken. Kommandoane
for å lage bildet til høgre er: Det er også råd å flytte pennen utan å teikne. Ein annan måte å oppgi koordinate på er å bruke «Point». Det første punktet inneheld x-,y-koordinata
for startpunktet, det andre punktet tilsvarande for sluttpunktet. Kommandoen kan vere f. eks.:
procedure lagStrek(fra,til: TPoint);
I prosedyren Strek kan ein sjølvsagt legge inn diverse while --- do eller
andre funksjonar som legg inn varierande data.
begin Form1.Panel1.Canvas.Line(fra,til); end; procedure Strek; var start, slutt: TPoint; begin start.x := 20; start.y := 20; slutt.x := 200; slutt.y := 20; lagStrek(start,slutt); end; Ein tredje måte å oppgi koordinata på er å bruke ein variabel deklarert som TRect. Streken vil då bli teikna
frå det øvre, venstre hjørnet til det nedre, høgre hjørnet i variabelen. Også dette er enklast med eit eksempel:
procedure Strek;
var rekt: TRect; begin rekt.Left := 20; rekt.Top := 20; rekt.Right := 200; rekt.Bottom := 100; Form1.Panel1.Canvas.Line(rekt); end;
Å teikne boga strekarDeler av ei ellipse Arc teikner deler av ei ellipse. Den generelle kommandoen er Dei fire første verdiane i kommandoen (x1,y1,x2,y2) er koordinata for å definere rektangelet som inneheld ellipsen. SX,SY er koordinata for startpunktet (3 på figuren) for sirkelbogen og EX,EY er koordinata for sluttpunktet (4 på figuren) for bogen. På figuren til høgre er rektangelet som ellipsen blir teikna inne i vist. Heile ellipsen er også prikka inn. Resultatet av Arc()-kommandoen er teikna i blått. Arc teiknar bogen mot klokka. Dersom verdiane for start- og sluttpunktet blir bytta om, vil den delen som er prikka bli teikna i staden for den delen som nå er teikna. Kommandoen for å teikne den blå bogen er: Vinklar i staden for koordinat I staden for å oppgi start- og stoppkoordinata, kan ein bruke vinklar. Av ein eller annan grunn har
utviklarane vald å bruke 1/16 grader i staden for grader. Ein full sirkel blir såleis
360 × 16 = 5760. 90º tilsvarer 16 × 90 = 1440 osv. Null-streken er klokka 3 på ellipsen, dvs. rett aust.
Ein positiv vinkelverdi betyr at bogen blir teikna mot klokka, medan ein negativ verdi gjer
at bogen blir teikna med klokka. Arc kan teikne med alle verdiar definerte for pen. Chord er i alle måtar nokså likt Arc, men teiknar i tillegg korden mellom endepunkta på sirkelbogen
og fyller segmentet med fargen frå Brush. Bruken er som for Arc. Bare bytt Arc med Chord. Sjå også Pie som teiknar eit sirkeldiagram.
Bézierkurver er noen spesielle matematiske kurver der bogen blir styrt av noen kontrollpunkt («anker») langs linja. Det første bildet viser ei bøygd kurve teikna i svart. Ved start- og endepunktet finn du prikka inn eit «anker». Plasseringa av dette ankeret styrer retninga og bogen for kurva inn eller ut frå det punktet ankeret hører til. På den neste teikninga er det høgre ankeret flytt mot venstre. Dette gjer at kurva inn til endepunktet blir noe flatare enn på det første bildet. Alt som er teikna i blått på bildet er hjelpelinjer og blir ikkje tatt med når kurva blir skriven ut. For å teikne ei bézierkurve må ein altså definere koordinata for start og slutt for kurva og dei to kontrollpunkta (ankera). Dette blir gjort i ei punktliste som så blir brukt i funksjonen PolyBezier(punktliste). Kurven på bildet til høgre er laga slik: Skal ein lage fleire samanhengande bézierkurver, kan ein sjølvsagt gjere dette ved å setje startpunktet for
den nye kurva lik endepunktet for den førre kurva. Men det er også råd å gjere dette ved å skrive inn data for dei
to ankerpunkta og endepunktet for den nye kurva. Startpunktet for den nye kurva vil då automatisk bli sett til å
vere det same som endepunktet for den førre kurva. Altså Fyllt kurve Bildet til høgre viser den same kurva som tidlegare, men nå er det teikna ei linje mellom start- og endepunktet. Mellomrommet mellom denne linja og kurva er fylt med Brush. Dette er gjort ganske enkelt ved å legge til True i kommandoen: Canvas.PolyBezier(tblPoints,True);. Litt tust i dokumentasjonen I følgje hjelp for Lazarus er det generelle funksjonskallet
|