IKT i praksis - Pascal |
|
Å lage geometriske figurar
Pascal har ein del ferdige funksjonar for å teikne sirklar, firkantar og mangekantar på teikneflata (canvas). Desse blir omtala i dette avsnittet. Plasseringa av figuren på lerretet blir bestemt ved hjelp av dei vanlege koordinata som er omtalte i kapitlet generelt. Strekbreidde, strekstil og strekfarge blir styrt av innstilingane for pen. Bakgrunnen, altså innsida av figuren, blir bestemt med verdiane sette for brush.
FirkantarBildet til høgre viser eit rektangel laga med funksjonen
Canvas.Rectangle(x1,y1,x2,y2). Fargen på innhaldet i firkanten blir altså bestemt med Brush.Color. På det neste bildet er denne fargen sett slik: Canvas.Brush.Color := clSilver; I tillegg er strekfargen forandra frå det normale svart til raudt med kommandoen Canvas.Pen.Color := clRed og strekbreidda er sett slik: Canvas.Pen.Width := 3 I staden for koordinata x1,y1,x2,y2 kan ein bruke TRect. Sjå nærare om dette i Koordinata som rektangel.
For å lage rektangel med avrunda hjørne, bruker ein dei same kommandoane som for å lage rektangel,
men må i tillegg oppgi radius for rundinga. Også her kan ein i staden for koordinata x1,y1,x2,y2 bruke TRect. Sjå nærare om dette i Koordinata som rektangel.
SirklarFunksjonen Ellipse vil teikne ei ellipse innføre rektangelet som er oppgitt med dei vanlege koordinata.
På figuren til høgre er det omligjande rektangelet teikna inn for å vise metoden. Komandoen vi teikne bare
ellipsen. Her er det brukt dei same verdiane som i rektangelet øvst på sida. Dersom det omkransande rektangelet er
eit kvadrat, vil figuren bli ein sirkel. Kommandoen er: Også her kan ein i staden for koordinata x1,y1,x2,y2 bruke TRect. Sjå nærare om dette i Koordinata som rektangel. I funksjonen EllipseC blir sentrum for figuren definert og deretter dei to radiusane. Den generelle
formelen er Både Ellipse og EllipseC bruker dei gjeldande innstillingane for Pen for å teikne omrisset og Brush for å fylle figuren.
MangekantarFunksjonen Polygon(Punktliste) blir brukt for å lage mangekantar eller for å lage firkantar som ligg «skeivt» i høve til skjermen. Hjørna i mangekanten blir definerte i ei punktliste der koordinata til kvart hjørne blir skrive inn. Endå ein
gong er det enklast med eit eksempel. I dokumentasjonen står det at det siste punktet (eit punkt 6) må vere det same som startpunktet. I praksis viser det seg at funksjonen legg til den siste linja sjølv. Til vanleg treng ein ikkje fleire parametrar for Polygon-funksjonen, men det finst noen til: Det er også mogleg å teikne mangekantar utan fyllfarge. Då bruker ein kommandoen PolyLine() i staden for
Polygon(). Parametra er dei same som for Polygon() med unnatak av at Winding, som
styrer fyllmetoden, naturleg nok ikkje er tatt med sidan det ikkje er noe fyll involvert her. Definisjonane er: Dersom det siste punktet i punktlista er ulikt det første punktet i lista, vil PolyLine ikkje gå tilbake til det første punktet i lista. Figuren blir ein ufullstendig mangekant, dvs. ei strekteikning. Teikninga over er laga med PolyLine(femkantPts); der punktlista er den same som brukt i Polygon ovanfor. Legg merke til at den siste streken ikkje er teikna. Dersom du endeleg må vite det, stjerna på toppen av sida er laga ved å definere ein tikant med Polygon-kommandoen. SpesiellePie teiknar eit «kakestykke» definert som ein del av ein ellipse. Frå endane på ellipsedelane blir
det trekt linjer til sentrum i ellipsen. Omrisset av kakestykket blir teikna med Pen medan området inne
i kakestykket blir fyllt med Brush. Kommandoen er: Denne gjer det same som Pie, men i staden for å oppgi koordinat for strålene ut frå sentrum, blir det brukt vinklar. Vinklane blir oppgitt i grader × 16. Ein vinkel på 90º blir altså oppgitt som 90 × 16 (= 1440). Null grader er klokka 3 (aust) på sirkelen. Kakestykket blir teikna mot klokka mellom den første og den andre vinkelen. Den generelle kommandoen er RadialPie(x1,y1,x2,y2,vinkel1*16,vinkel2*16). Dokumentasjonen for RadialPie er feil i Lazarus. Ikkje bry deg om den. Forklaringa ovanfor er korrekt. Endå ein gong mykje ekstraarbeid pga. manglande eller feil dokumentasjon. |
|
© Innhald og design: Kolbjørn Stuestøl | Stuestøl heimeside | Sist endra 11. april 2013 |