Poligon vonallánc és zárt poligon
A Pascal vonalak előző oldalán a MoveTo és a LineTo eljárásokkal az egymást követő egyenes vonalak létrehozását tekintettük. De ismerjük a vonallánc csúcsainak koordinátáit (zárt vagy nem), ugyanez a PolyLine és Polygon eljárásokkal is el lehet érni. Hogyan, és mi a különbség ezek között a szubrutinok között?
Polyline rajzolási eljárás egy vonalláncra
✎ PolyLine - eljárás. Megszegő vonalat húz azon pontokon, amelyek koordinátái a pontsorban szerepelnek. A PascalABC és a PascalABC.Net esetében ez az eljárás némileg eltérő.
Először a PolyLine-t definiáljuk PascalABC és PascalABC.Net alatt, és alább mutatunk be néhány példát.
PolyLine a PascalABC-ben:
PolyLine eljárás (var pontok: tömb [1..n] pont; n: egész szám);
- Épít egy vonalláncot olyan n pontokon, amelyeknek a koordinátái a pont típusú elemek a mezőjében vannak megadva, amelyet a rekord határoz meg:
PolyLine a PascalABC.Net-ben:
PolyLine eljárás (pontok: Pont tömb);
- Megszegő vonalat rajzol olyan pontokra, amelyek koordinátái a pontsorban szerepelnek. Ez a pont egy dinamikus tömb. amelyre előzetesen meg kell határoznia a méretet, és nem írható le a Point (ez a beépített PascalABC.Net típus).
Itt azt látjuk, hogy a PascalABC.Net vonallánc eljárást csak az egyik lehetőség - az aktuális pontok a tömb pont (ellentétben az egyszerű PascalABC, ahol a második paraméter - a méret a tömb vagy a pixelek száma). Azt is meg kell jegyezned, hogy a dinamikus tömbökben a számozás 0-nál kezdődik.
Vegyünk egy példát a PascalABC PolyLine pontjaiból álló tömbsorról:
MoveTo (x, y) és LineTo (x, y) használatakor ugyanazt fogjuk elérni:
PascalABC kód, PascalABC.Net
Mindkét esetben ugyanazt az eredményt kapjuk:
Íme egy példa ugyanarra a programra, de a PascalABC.Net-ben:
A négyzetgyök diagramja
A PascalABC.Net környezetben a négyzetgyök-függvény funkciójának ábrázolásának eredményét az alábbi ábra mutatja:
Sokszög poligon rajzolási eljárás
✎ Sokszög - eljárás. egy PascalABC zárt vonalláncot és egy töltött poligont húz a PascalABC.Net-ben olyan pontoknál, amelyeknek koordinátái a pontsorban vannak megadva.
Poligon a PascalABC-ban:
eljárás Sokszög (var A: tömb [1..n] pont; n: egész szám);
- Zárt törött vonalat épít fel olyan n pontokkal, amelyek koordinátái a Point típusú elemek egy tömbjében vannak megadva. Itt a PascalABC pont típusa.
Poligon a PascalABC.Net-ben:
eljárás Sokszög (pontok: Pont tömb);
- Töltött sokszöget rajzol. melynek csúcspontjainak koordinátái a pontsorban szerepelnek. Itt pontok dinamikus tömbje a Point típusú pontoknak, amelyek X, Y mezőket tartalmaznak (a grafikus ablakban lévő pont koordinátái). Pont a PascalABC.Net egy beépített adattípus (primitív, alap), vagyis nem kell leírni.
Mi a különbség a Polygon és a PolyLine között? Az egyetlen különbség az, hogy a Polygon esetében az első pont bezáródik az utolsóhoz, és ennek eredményeképpen nemcsak egy törött vonalat kapunk, hanem egy zárt törött vonalat - sokszöget. Ezután példákat adunk arra, hogy Polygon eljárást használjunk a PascalABC és a PascalABC.Net számára a poligonok rajzolásához.
A doboz a PascalABC-ban
Rajzolj egy háromszöget a PascalABC-ban:
A program így működik: amikor a grafikus ablakban elkezdsz, minden 2 másodpercenként megjelenik a polírozott sokszögek, amelyeknek véletlenszerű száma 3 és 30 között van. Ezután határozzuk meg a rendszeres sokszög csúcspontjainak koordinátáit, majd keressük meg a szükséges sokszög csúcsait 15 képpontos véletlenszerű eltérésként (20-28 vonalak). Ezután rajzoljon egy sokszöget (32 sor), és mentse a képet (35. sor).
Felhívjuk figyelmét, hogy ez a folyamat fut beksonechnom ciklus (hamis állapot kimenetén repeat-until ciklus mindig hamis, így soha nem áll), így abba, egyszerűen zárja be az ablakot. És még fontosabb: minden második másodpercben egy új képfájl lesz a "Maped quadrilateral-1.jpg" típusú programfájlban. "A festett négyszög-2.jpg". "Festett négyszög-3.jpg" stb. és ha nem kell ezeknek a rajzoknak, akkor törölni kell őket. Az alábbi példák az ilyen sokszögekről (a kép felett mozogva, és előre-hátra görgetés):
Végezetül szeretnék egy fontos pontot megemlíteni a Poligon eljárásról. A PascalABC ő húz egy üres sokszög, és PascalABC.Net - tele. Ez azt jelenti, hogy ahhoz, hogy festeni a sokszög PascalABC FloodFill kell használni az eljárás az (x, y, Szín: integer) kitöltésével zárt területek színét kiindulási ponttól (x, y) és PascalABC.Net - csak a szín SetBrushColor kefe (C: szín).