Construcția unei polilinii cu vârfuri în punctele matricei XY (n este numărul de puncte)
În construcții grafice care implică fie coordonate absolute ale punctelor (x1, y1), (x2, y2), a cerut valori de tip smallint în ecranul de sistem, sau sporurile (dx, dy) în raport cu poziția punctului curent de coordonate. Coordonatele absolute pot fi, de asemenea, negative. Aceasta înseamnă că unul dintre punctele primiticii grafice este în afara grila ecranului. Dar va fi construit fragmentul vizibil al primitivului grafic corespunzător. Procedura de specificare a punctelor de colț ale unui dreptunghi este fixată rigid. Punctul (x1, y1) corespunde colțului din stânga sus al dreptunghiului.
După deschiderea graficului sau ștergerea ecranului grafic, punctul curent (cursorul grafic) este la originea - în colțul din stânga sus al ecranului. La construirea liniilor, punctul curent se deplasează la sfârșitul segmentului. Construcția unui dreptunghi nu modifică poziția punctului curent. Puteți vedea acest lucru în exemplul următor (a se vedea Lista 15.3).
Listarea 1 5 .3. Programul CP
programul CP; utilizează grafic; var
gd: = D8bit; gm: = m800x600; initgraph (gd, gm, ");
LineRel (50,0); readln; closegraph;
Fereastra grafică corespunzătoare este prezentată în Fig. 15.4.
Fig. 15.4. Mutați punctul curent
Liniile drepte și contururile dreptunghiului pot fi desenate nu numai de linii solide. Implicit, acest mod este setat în sistemul grafic. Cu toate acestea, utilizatorul îl poate schimba făcând referire la procedura SetLineStyle.
SetLineStyle (stil, model, lățime);
Primul său parametru Stil este de obicei dat de una dintre următoarele constante mnemonice:
± SolidLn - modul de construire a liniilor solide (implicit);
± DottedLn - un mod de construire a unei linii punctate;
± CenterLn - modul de construire a unei linii punct-bord;
± Dashedln - un mod de construire a unei linii punctate;
± UserBitln - un mod de construire a liniilor pe un șablon al utilizatorului.
În primele patru moduri, parametrul Pattern este ignorat și poate fi setat, de exemplu, la zero. Scopul său este de a seta un șablon de utilizator, care este format ca o constanță hexazecimală de două octeți. Șablonul este scanat de la stânga la dreapta. Următoarea descărcare zero face ca următorul pixel al liniei să fie invizibil, iar cifra unică este vizibilă. După epuizarea biților șablonului, scanarea biților este repetată din nou. Probele de reproducere a tipurilor de linii standard sunt prezentate în Fig. 15.5. Ca un șablon non-standard, a fost folosit constant Pat = $ FFFFFF00.
Al treilea argument pentru procedura SetLineStyle specifică grosimea liniei, care poate fi
Este egal cu un pixel (lățime = NormWidth) sau doi pixeli (lățime = grosime).
Fig. 15.5. Stiluri de linie
Procedura DrawPoly este folosită pentru a construi o polilinie a cărei noduri sunt date de o serie de puncte tip PointType. Dacă coordonatele ultimului punct al matricei coincid cu coordonatele punctului de pornire, atunci orice poligon poate fi construit în acest fel (vezi Listing 15.4).
Listarea 15.4. Programul poligon
program poligon; utilizează grafic;
xy: array [1..4] din PointType;
DrawPoly (4, xy); // construirea unui triunghi
Ecranul grafic al acestui program este prezentat în Fig. 15.6.
Fig. 15.6. Construirea unui triunghi
Fig. 15.1, 15.3-15.6 sunt construite artificial, deoarece modul de desen standard reproduce toate elementele grafice în alb pe un fundal negru. Prin urmare, ferestrele grafice reale programe corespunzătoare au fost prelucrate în Paint Tratamentul folosind culori pentru zonele selectate ale câmpului de lucru.
Faptul că o încercare de a desena pe ecran grafic în alb-negru nu poate fi rezolvată prin simpla schimbare a culorii vopselei (fc: = 0) și culoarea de fundal (bc: = 15). Când este inclus în programul de mai sus înainte de a apela procedura Draw-Poly, următoarele două instrucțiuni:
SetColor (0); // codul culorii negre SetBkColor (15); // cod alb
conținutul ecranului grafic nu se modifică. Încercarea de a afișa culoarea de fundal prin ștergerea conținutului ecranului (procedura ClearDevice) este, de asemenea, nu este bun nu - ecranul merge alb, iar pictura de culoare de pe fundal alb rânduri Nu ar trebui să plece. Prin urmare, este necesar să se meargă la sistemul de „hype“ grafică: transfer de culoare Cod zero la DAC înregistrare cu un altul decât 0. Apoi culoarea de ceai numit în culoarea planului frontal numărul și schimbă culoarea de fundal (a se vedea Listarea 15.5).
Listarea 1 5 .5. Desen în negru pe alb
program poly_B_W; utilizează grafic;
xy: array [1..4] din PointType;
gd: = D8bit; gm: = m800x600; initgraph (gd, gm, ");
SetPalette (1,0); // culoare neagră -> primul registru al DAC SetColor (1); // setați culoarea desenului SetBkColor (15); // modificați culoarea de fundal
ClearDevice; // aspectul culorii de fundal
DrawPoly (4, xy); readln; CloseGraph;
După aceste manipulări, avem un ecran grafic, a cărui ieșire nu duce la creșterea consumului de toner (vezi Figura 15.6).