Umíte pascalsky - 25.lekce ... |
Umíte pascalsky? 25.lekce |
Vytisknout |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Grafické možnosti 1.Inicializace Chceme-li využívat grafické prostředky jednotky GRAPH, musíme hardware počítače přepnout do grafického režimu procedurou InitGraph(adapter, mode, path) adapter - typu integer, číslo grafické karty (1 - 10), lze autodetekovat pomocí příkazu adapter := detect; mode - typu integer, druh grafického režimu, nemusí být inicializována path - typu string, cesta k souborům .BGI a .CHR Proměnné adapter a mode můžeme zjistit procedurou DetectGraph(adapter, mode) Po deklaraci proměnných adapter, mode, path a inicializaci procedurou DetectGraph(adapter,mode), můžeme tedy přepnout do grafického režimu procedurou InitGraph(adapter,mode,path) a používat grafické procedury a funkce (zmizí obsah obrazovky textového režimu). Funkce GraphResult vrací kód chyby poslední provedené grafické operace, je-li vše v pořádku, vrací hodnotu 0 Po ukončení práce v grafickém režimu musíme počítač přepnout zpět do textového režimu procedurou CloseGraph 2.Tisk znaků Tisk řetězce znaků provádí procedura OutText(řetězec) Chceme-li vytisknout číslo, musíme jej nejprve převést procedurou Str na řetězec. Tisk od souřadnic [x,y] umožňuje procedura OutTextXY(x,y,řetězec) Při tisku nedochází k automatickému odřádkování (na pravém okraji). Pro odřádkování musíme kurzor přemístit na začátek následujícího řádku. Přenesení grafického kurzoru na pozici [x,y] umožňuje procedura MoveTo(x,y) Přenesení grafického kurzoru o změnaX a změnaY zajistí procedura MoveRel(změnaX,změnaY) Funkce GetX vrací aktuální X-ovou souřadnici grafického kurzoru a funkce Gety vrací aktuální Y-ovou souřadnici grafického kurzoru. Přemístění kurzoru na další řádek může tedy provést například příkaz MoveTo(0,GetY+10); Styl písma definuje procedura SetTextStyle(sada,směr,velikost) - sada je číslo 0 až 4:
Potřebujeme-li zjistit souřadnice levého horního a pravého dolního rohu obrazovky (popř. aktuálního okna), deklarujeme nejprve proměnnou rozmer: var rozmer: viewporttype (předdefinovaný typ - záznam) a potom použijeme proceduru GetViewPort(rozmer) V proměnných rozmer.x1,rozmer.y1 jsou souřadnice levého horního rohu a v proměnných rozmer.x2,rozmer.y2 jsou souřadnice pravého dolního rohu Okno v grafickém režimu definuje procedura SetViewPort(x1,y1,x2,y2,clip) Kurzor se nastaví do levého horního rohu okna, okno se nesmaže ani neorámuje. Aktuální okno smaže procedura ClearViewPort 3.Barvy Funkce GetMaxColor zjistí největší číslo barvy použitelné pro nastavení aktivní barvy Procedura SetColor nastaví aktivní barvu z aktivní palety barev Procedura SetBkColor nastaví barvu pozadí z aktivní palety barev Paleta barev je množina barev (počet GetMaxColor), které smějí být naráz zobrazeny na monitoru. Další barvu můžeme dát do palety jen na úkor jiné barvy pomocí procedury SetPalette(číslo barvy,barva) 4.Kreslení obrázků Pro kreslení čar slouží následující procedury: PutPixel(x,y,barva) vybarví bod [x,y] zadanou barvou Line(x1,y1,x2,y2) spojí body [x1,y1] a [x2,y2] úsečkou LineTo(x,y) spojí současnou polohu graf.kurzoru s bodem [x,y] úsečkou LineRel(změnaX,změnaY) spojí současnou polohu graf.kurzoru s bodem vzdáleným o změnaX a změnaY SetLineStyle(typcary,maska,tloustka) definuje aktivní typ čáry typcary
tloustka
Pro kreslení křivek se požívají tyto procedury: Circle(x,y,poloměr) nakreslí kružnici se středem [x,y] a daným poloměrem Ellipse(x,y,Od,Do,xp,yp) nakreslí elipsu nebo její část se se středem [x,y] Od je počáteční úhel a Do je koncový úhel oblouku elipsy (celá elipsa je Od=0 a Do=360 xp je velikost poloosy X yp je velikost poloosy Y Arc(x,y,Od,Do,poloměr) nakreslí část kružnice se středem [x,y],daným poloměrem a danými úhly počátku a konce oblouku Rectangle(x1,y1,x2,y2) nakreslí obdélník s levým hor.rohem [x1,y1] a pravým dolním [x2,y2] DrawPoly(počet bodů,Souradnice) spojí úsečkami po řadě daný počet bodů se souřadnicemi uloženými v proměnné Souradnice POLE musíme deklarovat: var Souradnice:Array [1..4] of PointType; kde PointType je předdefinovaný typ pro souřadnice bodu v rovině (záznam o dvou složkách x,y) Šrafované obrazce. FloodFill(x,y,barva) vyplní rovinu oklo bodu [x,y] danou barvou a aktivním typem šrafování až po hranici SetFillStyle(druh,barva) určuje druh a barvu aktivního šrafování druh je číslo 0..12 s tímto významem:
Bar(x1,y1,x2,y2) vyšrafovaný obdélník [x1,y1] a [x2,y2] Bar3D(x1,y1,x2,y2,Hl,Vr) prostorový kvádr s vyšrafovanou přední stěnou, [x1,y1] a [x2,y2] jsou souřadnice přední stěny,Hl je hloubka a Vr (boolean) udává přítomnost vrchní podstavy. FillPoly(počet bodů,Souradnice) vyšrafovaný mnohoúhelník PieSlice(x,y,Od,Do,poloměr) vyšrafovaný kruhový oblouk Sector(x,y,Od,Do,xp,yp) vyšrafovaná část elipsy Příklad: Sestavte program Kresli, který vytvoří tuto obrazovku: Myšlenka (hrubý algoritmus): Inicializace - inicializace grafického režimu Nadpis - vytvoření nadpisu Křivky a tělesa Robot - nakreslí hlavu robota Jehlan - nakreslí a popíše čtyřboký jehlan Upřesníme souřadnice jednotlivých elementů na obrazovce: Program Kresli může vypadat takto:
Domácí úkol: Sestavte program Kreslim , který nakreslí barevnou hrací kostku a velmi zjednodušeně osobní automobil (autíčko) s nadpisem Hra v Pascalu. On-line účast na řešení úkolu Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím. |