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.