Pikaopas grafiikan tekoon Turbo Pascalin Graph:illa
Peruskomentoja
bar(x1,y1,x2,y2) piirtää nelikulmion, jonka kulmat vas. yläkulma
(x1,y1) ja oikea alakulma (x2,y2) sen hetkisellä värillä ja kuvioinnilla.
circle(x,y,radius) piirtää ympyrän, jonka keskipiste on (x,y) ja säde
radius.
clearviewport tyhjentää ruudun (värittää kaiken taustavärillä 0) ja
siirtää kursorin alkuun (0,0).
drawpoly(n, polygoni) piirtää polygonin, joka koostuu n:stä
pisteestä. Polgoni on pistejoukko, joka
täytynyt määritellä ensin:
const polygoni: array[1..n] of integer=((x1,y1), (x2,y2),...,(xn,yn));
ellipse(x,y,stangle,endangle,xradius,yradius) piirtää ellipsin (tai
osan ellipsin kaarta), jonka keskipiste on (x,y), stangle on
alkukulma, endangle loppukulma (jos stangle=0 ja endangel=360,
piirretään täysi ellipsi), x-akelsin suuntainen säde on xradius ja
y-akselin suuntainen säde yradius. Kulmat mitataan vastapäivään. Kulma
0 osoittaa kello 3:een, kulma 90 kello 12:een, 180 kello 9:ään ja 270
kello 6:een.
fillellipse(x,y,xradius,yradius) piirtää ellipsin ja täyttää sen
senhetkisellä täyttövärillä ja täyttökuvioinnilla. Reunaviiva tulee sen
hetkisellä piirtovärillä.
fillpoly(n, poly) kuten drawpoly, mutta nyt polygoni täytetään
senhetkisellä täyttövärillä ja täyttökuvioinnilla.
gotoxy(x,y) siirtää kursorin pisteeseen (x,y) senhetkisessä
ikkunassa. Piste (1,1) on vasen yläkulma. (Tämä on Crt-komento, Graphin
moveto tekee saman.)
line(x1,y1,x2,y2) piirtää viivan pisteestä (x1,y1) pisteeseen (x2,y2).
lineto(x,y) piirtää viivan senhetkisestä paikasta pisteeseen (x,y).
Huom! moveto(x1,y1); lineto(x2,y2); tekee saman kuin
line(x1,y1,x2,y2).
moveto(x,y) siirtää kursorin kohtaan (x,y). Huom! Tämä vastaa samaa
kuin tekstimoodin kursorin siirto (gotoxy), mutta nyt kursori on näkymätön.
rectangle(x1,y1,x2,y2) piirtää nelikulmion, jonka vas. yläkulma on
(x1,y1) ja oikea alakulma (x2,y2).
setcolor(color) asettaa värin color-numeron mukaan. Color voi saada
arvot väliltä 0..15.
setfillstyle(pattern, color) asettaa täyttötyypin ja värin. Pattern
voi olla esim. jokin seuraavista: emptyfill (taustaväri), solidfill
(kuvioimaton väritys), linefill (--- kuvio), slashfill (///-kuvio),
widedotfill (väljä pistekuvio), closedotfill (tiivis
pistekuvio). Oletusarvo on solidfill.
setpalette(colornum, color) asettaa värinumeron colornum väriksi
color. Käytössä on värinumerot 0..15 ja color voi saada arvon
shortint. Valmiiksi määritellyt värit: 0=black, 1=blue, 2=green, 3=cyan,
4=red, 5=magenta, 6=brown, 7=lightgray, 8=darkgray, 9=lightblue, 10=lightgreen,
11=lightcyan, 12=lightred, 13=lightmagenta, 14=yellow, 15=white.
setviewport(x1,y1,x2,y2,clip) asettaa ikkunan, johon
piirretään. Boolean-muuttuja clip määrittää, leikataanko kuva ikkunan
reunoilta. Valmiiksi määritellyt vakiot: ClipOn=true ja
ClipOff=false. Muista asettaa ikkuna takaisin komennolla
setviewport(0,0,getmaxx, getmaxy), kun haluat palata pikkuikkunasta
koko ruudun kattavaan piirtoikkunaan.
Huom! Piirtokomentojen koordinaatit
on määritelty aina suhteessa ikkunaan, jossa ollaan piirtämässä!
Ikkunan vasen yläkulma on (0,0). Esim. jos asetetaan 10*10 ikkuna,
jonka vasen yläkulma on paikassa (15,15), ja mennään paikkaan (5,5),
ollaankin todellisuudessa koko ruudun pisteessä (20,20):
setviewport(15,15,25,25,ClipOn);
movexy(5,5);
Tarvittavat apurutiinit
Ohjelman alussa kerro, että haluat käyttää apupaketteja Crt ja
Graph. Crt mahdollistaa merkkigrafiikan teon (edellisistä vain komento
gotoxy) ja graph "oikean" grafiikan piirtämisen.
program Grafiikkakokeilu(input, output);
uses Crt, Graph;
Määrittele seuraavat muuttujat:
var GrDriver, GrMode: integer;
Ja kopioi seuraavat alustusproseduurit:
procedure TarkistaBGIVirhe(SuljeGrafiikka:boolean);
{****************************************************************************}
{* tarkistaa, tapahtuiko virhe grafiikkatilaa kaynnistaessa *}
{****************************************************************************}
var virhe:integer;
begin
virhe:=GraphResult;
if virhe < 0 then
begin
if SuljeGrafiikka then
CloseGraph;
writeln('Error: ', GraphErrorMsg(virhe));
halt(1);
end;
end;
procedure Alusta;
{****************************************************************************}
{* suorittaa alustustoimenpiteet *}
{****************************************************************************}
var i,j:integer;
begin
DetectGraph(GrDriver,GrMode); {grafiikkatilan alustus}
if (GrDriver <> VGA) then
begin
writeln('This program requires a VGA-display');
halt(1);
end;
GrDriver:=VGA;
GrMode:=VGAHi;
InitGraph(GrDriver,GrMode,'');
TarkistaBGIVirhe(false);
end;
Pääohjelmassa:
{************************************************************************}
{* paaohjelma *}
{************************************************************************}
begin
Alusta;
{ Pirrä mitä tahdot }
readln;
CloseGraph;
readln;
end.