Pe pagina anterioară a liniilor din Pascal am considerat construirea unor linii succesive, folosind procedurile MoveTo și LineTo. Dar cunoscând coordonatele vârfurilor poliliniei (închise sau nu), aceleași lucruri pot fi obținute prin procedurile Polyline și Polygon. Cum, și care este diferența dintre aceste subrutine?
Procedura de desen PolyLine pentru o polilinie
✎ Procedură PolyLine. Trasează o linie întreruptă pe punctele ale căror coordonate sunt date în tabloul de puncte. În PascalABC și PascalABC.Net această procedură este setată ușor diferit.
Mai întâi definim PolyLine în PascalABC și PascalABC.Net, și mai jos vom da câteva exemple.
Polyline în PascalABC:
procedură PolyLine (puncte var: matrice [1..n] din punct; n: integer);
- Construiește o polilinie pe n puncte ale căror coordonate sunt date în matricea a elementelor de tip Point specificate de înregistrare:
Polyline în PascalABC.Net:
procedura PolyLine (puncte: matrice de Point);
- Desenează o linie întreruptă pe punctele ale căror coordonate sunt date în tabloul de puncte. Asta este punctul este o matrice dinamică. pentru care trebuie să predefinezi dimensiunea și nu trebuie să descrie tipul (nu este necesar să descrii) (acesta este tipul PascalABC.Net încorporat).
Aici se vede că, în procedura de PascalABC.Net polilinie are doar o singură opțiune - punctele reale ale punctelor de matrice (spre deosebire de simplu PascalABC, în cazul în care există este al doilea parametru - dimensiunea matrice sau numărul de pixeli). De asemenea, trebuie să vă amintiți că, în matrice dinamice, numerotarea începe la 0.
Să construim un exemplu de linie întreruptă dintr-o serie de puncte PolyLine în PascalABC:
Vom obține același lucru când folosim MoveTo (x, y) și LineTo (x, y):
Cod PascalABC, PascalABC.Net
În ambele cazuri, obținem același rezultat:
Iată un exemplu al aceluiași program, dar în PascalABC.Net:
Graficul radacinii pătrată
Rezultatul plotării funcției funcției rădăcină pătrată în mediul PascalABC.Net este prezentat în figură:
Procedura de desen polygon poligon
✎ Procedura de poligon. trasează o polilinie închisă în PascalABC și un poligon umplut în PascalABC.Net de puncte ale căror coordonate sunt date în tabloul de puncte.
Poligon în PascalABC:
procedura Polygon (var A: matrice [1..n] din punct; n: integer);
- Construiește o linie întreruptă cu puncte n, ale căror coordonate sunt date într-o matrice a elementelor de tip Point. Aici Point este tipul de punct în PascalABC.
Poligonul în PascalABC.Net:
procedura Polygon (puncte: matrice de Point);
- Desenează un poligon umplut. coordonatele ale căror noduri sunt date în tabloul de puncte. Aici punctele reprezintă o matrice dinamică de puncte de tip Point având câmpurile X, Y (coordonatele punctului din fereastra grafică). Punct în PascalABC.Net este un tip de date încorporat (primitiv, de bază), care este unul pe care nu trebuie să îl descrieți.
Care este diferența dintre Polygon și PolyLine? Singura diferență este că, în cazul lui Polygon, primul punct se închide cu cel din urmă și, ca rezultat, ajungem nu numai la o linie întreruptă, ci și la o linie închisă închisă - un poligon. Apoi, vom da o serie de exemple de utilizare a procedurii de poligon în PascalABC și PascalABC.Net pentru desenarea poligoanelor.
Caseta din PascalABC
Desenați un triunghi în PascalABC:
Programul funcționează după cum urmează: apar poligoane umbrite, cu un număr aleator de vârfuri 3-30 (linia de cod 16), atunci când rula în fiecare fereastră grafică de 2 secunde. Apoi definim coordonatele nodurilor unui poligon regulat, iar după aceea vom găsi nodurile necesare poligonului ca o deviație aleatoare este de 15 pixeli (linii de 20 - 28). Apoi, desenați un poligon (rândul 32) și salvați imaginea (linia 35).
Vă rugăm să rețineți că acest proces se execută în ciclul beksonechnom (condiție falsă la ieșirea repetată până când bucla este întotdeauna falsă, așa că nu se oprește niciodată), așa că nu-l, pur și simplu închideți fereastra. Și mai important: la fiecare două secunde veți avea un nou fișier de imagine de tipul "Painted quadrilateral-1.jpg" în dosarul programului. "Cvadrangle-2.jpg pictat". "Pictat quadrilateral-3.jpg", etc. și dacă nu aveți nevoie de aceste desene, atunci ele trebuie șterse. Iată exemple de astfel de poligoane (treceți deasupra imaginii și parcurgeți înainte și înapoi):
În cele din urmă, aș dori să menționez un punct important referitor la procedura poligonului. în PascalABC deseneaza un poligon gol, și PascalABC.Net - umplut. Aceasta înseamnă că, pentru a picta poligon în PascalABC FloodFill necesitatea de a utiliza procedura de (x, y, Culoare: întreg) umplere zone închise de culoare pornind de la punctul (x, y), în PascalABC.Net - doar setați peria de culoare SetBrushColor (C: Culoare).