Lekce 1.07
Ovládání grafického okna


předchozí lekce (1.06) obsah kurzu následující lekce (1.08)

Předchozí lekce vás seznámila krátce se základními možnostmi použití grafického výstupního okna. Naučili jste se kreslit do grafické plochy pomocí myši, ukládat, načítat a vytisknout vytvořený obrázek. Nyní se seznámíte s dalšími možnostmi grafického okna a s parametry okna, které budete potřebovat pro programování grafických povelů. Poznáte, že vše, co bylo možné nastavit v grafickém okně budete mít možnost zadat pomocí povelu z příkazového okna.

Činnost grafického okna je možné si představit jako malířské plátno definovaných rozměrů, na které se kreslí perem (anglicky pen). Větší plochy je možné vybarvit štětcem (anglicky brush). Kreslí se přitom vždy nastavenou barvou. Systém obsahuje povely pro nastavení parametrů pera i štětce. S možnostmi se seznámíte v následujícím textu.

Při kreslení obrazců do grafického okna se kreslí obrazce čárou, jejíž typ je definován povelem ImagePenStyle a tloušťka čáry je definována povelem ImagePenWidth. Plocha nakreslených geometrických obrazců je vyplněna stylem zadaným povelem ImageBrushStyle.

Nejjednodušší je změna tloušťky čáry, kdy uvádíte přímo jako parametr povelu tloušťku čáry v bodech. Pro změnu tloušťky čáry na pět bodů použijete z příkazového okna následující povel:


ImagePenWidth(5)
Všimněte si, že pokud nastavíte sílu čáry povelem z příkazového okna, použije se nastavená síla čáry i pro následné kreslení pomocí myši přímo v grafickém okně. Obdobná vlastnost je platná i pro nastavení všech parametrů grafického okna. Máte proto možnost libovolně kombinovat zadávaní povelů z příkazového okna nebo jejich nastavení pomocí ikon. V budoucnu budete mít samozřejmě možnost uvedené parametry nastavit i přímo z programu.

Styl čáry máte možnost zadávat povelem ImagePenStyle. Předdefinováno je šest stylů. Jako parametr povelu musíte přitom zadat definovaný styl čáry. Parametr můžete uvést buď číselnou hodnotou, nebo jménem konstanty dle následující tabulky:


---------------------------------------------------------
hodnota   konstanta      název stylu
---------------------------------------------------------
   1      psSolid        souvislá čára
   2      psDash         přerušovaná čára
   3      psDot          tečkovaná čára
   4      psDashDot      čerchovaná čára
   5      psDashDotDot   čerchovaná čára se dvěma tečkami
   6      psClear        neviditelná čára
---------------------------------------------------------
Příklady použití definice stylu čáry (text mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImagePenStyle(1)         'souvislá plná čára 
ImagePenStyle(3)         'tečkovaná čára 
ImagePenStyle(6)         'neviditelná čára

ImagePenStyle(psSolid)   'souvislá plná čára
ImagePenStyle(psDot)     'tečkovaná čára 
ImagePenStyle(psClear)   'neviditelná čára 
Existuje samozřejmě i způsob nastavení barvy čáry. Nejprve se však budeme muset seznámit s možnostmi použití barev v počítači. Zobrazování barev závisí na vlastnostech videokarty ve vašem počítači. Používáte-li barevnou VGA kartu, máte možnost zobrazit minimálně 16 barev. Po příslušném nastavení videoadaptéru je možné běžně zobrazovat 256 barev, výjimečně i více. Vy budete mít možnost nastavit v systému libovolnou barvu z rozsahu 16 miliónů barev. Skutečně zobrazená barva ale závisí na vlastnostech technického zařízení, protože se zobrazí vždy barva nejbližší.

Hodnotu barev je možné zadávat dvěma způsoby, které lze v programu libovolně kombinovat. Pokud budete používat pouze základní, šestnáctibarevnou paletu, můžete tak učinit zadáváním předdefinované konstanty udávající anglické jméno barvy. Stejnou barvu máte možnost zadat i pomocí tzv. RGB hodnoty.

Hodnota barev zadávaná definicí RGB znamená, že každá barva je definována jako poměr kombinace barev modré, zelené a červené. Pro každou barvu je možné volit hodnoty v rozsahu 0 až 256. Násobek těchto hodnot (modrá x zelená x červená) udává výslednou barvu. Výhodné je používat tzv. hexadecimálního zápisu, kdy jsou pro každou barvu vyhrazeny dvě pozice čísla s hodnotami od 00 (číslo 0) až do FF (číslo 256). Při použití hexadecimálního čísla je nutné uvést před číslem rozlišovací znak & a číslo musí začínat vždy písmenem H jako návěští hexadecimálního čísla. Viz tabulka hodnot barev:


-------------------------------------------
hodnota    konstanta    název barvy
-------------------------------------------
&H000000    clBlack      černá
&H000080    clMaroon     kaštanově červená
&H0000FF    clRed        světle červená
&H008000    clGreen      tmavě zelená
&H008080    clOlive      tmavě žlutá
&H00FF00    clLime       světle zelená
&H00FFFF    clYellow     žlutá
&H800000    clNavy       tmavě modrá
&H800080    clPurple     tmavě fialová
&H808000    clTeal       tmavě modrozelená
&H808080    clDkGray     tmavošedá
&H0C0C0C0   clLtGray     světle šedá
&H0FF0000   clBlue       modrá
&H0FF00FF   clFushsia    fialová
&H0FFFF00   clAgua       modrozelená
&H0FFFFFF   clWhite      bílá
------------------------------------------
Příklady použití definice barvy čáry (text mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImagePenColor(clWhite)     'bílá barva čáry
ImagePenColor(clRed)       'světle červená barva čáry 
ImagePenColor(clBlue)      'modrá barva čáry 

ImagePenColor(&H0FFFFFF)   'bílá barva čáry 
ImagePenColor(&H00000FF)   'světle červená barva čáry 
ImagePenColor(&H0FF0000)   'modrá barva čáry 
Podobně, jako je možné nastavit parametry kreslené čáry je možné nastavit parametry vykreslovaných ploch geometrických obrazců. Barva plochy se přitom zadává povelem ImageBrushColor. Používá se přitom výše zadaných hodnot a konstant pro definici parametru barvy. Příklady použití definice barvy plochy (text mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImageBrushColor(clWhite)      'bílá barva plochy 
ImageBrushColor(clRed)        'světle červená barva plochy
ImageBrushColor(clBlue)       'modrá barva plochy 

ImageBrushColor(&H0FFFFFF)    'bílá barva plochy
ImageBrushColor(&H00000FF)    'světle červená barva plochy
ImageBrushColor(&H0FF0000)    'modrá barva plochy 
Pro nastavení stylu vyplňování ploch se používá povel ImageBrushStyle, kde se jako parametr povelu udává buď číslem definovaný styl, nebo jméno konstanty dle následující tabulky:

-----------------------------------------------------------
hodnota   konstanta      název stylu
-----------------------------------------------------------
   1      bsSolid        vyplní oblast jednou barvou
   2      bsClear        vyplní oblast barvou pozadí
   3      bsHorizontal   vyplní oblast vodorovnými čárami
   4      bsVertical     vyplní oblast svislými čárami
   5      bsFDiagonal    diagonální čáry \\\\\\\
   6      bsBDiagonal    diagonální čáry ///////
   7      bsCros         vodorovné a svislé čáry
   8      bsDiagCross    vodorovné a svislé čáry diagonálně
------------------------------------------------------------
Příklady použití definice stylu plochy (text mezi složenými závorkami nemusíte psát, jedná se o poznámku):

ImageBrushStyle(1)            'plné vybarvení plochy
ImageBrushStyle(3)            'výplň vodorovnými čárami
ImageBrushStyle(8)            'výplň diagonálními čárami

ImageBrushStyle(bsSolid)      'plné vybarvení plochy
ImageBrushStyle(bsHorizontal) 'výplň vodorovnými čárami
ImageBrushStyle(bsDiagCros)   'výplň diagonálními čárami
Aby bylo možné kreslit v grafickém okně do přesně určených pozic, musí být zadány souřadnice pro kreslení. Souřadnice určují polohu jednotlivých bodů kresby. Souřadnice znamená, že musíte uvést vzdálenost v bodech od levého okraje grafického okna a vzdálenost v bodech od horního okraje grafického okna. Souřadnicový systém je tedy vztažen k levému hornímu rohu, který má souřadnici 0,0. Hodnoty ve směru osy X narůstají směrem doprava, hodnoty ve směru osy Y narůstají směrem dolů. Při zápisu souřadnice se uvádí nejprve osa x, potom osa y. Je přitom možné zadávat příkazy pro kreslení mimo plochu grafického okna, zobrazí se však pouze ta část, která je obsažena maximálními souřadnicemi grafického okna.

Aktuální souřadnice se zobrazují ve stavovém řádku systému vždy, když máte nastavenou myš nad grafickým oknem. Souřadnice je vhodné si vyzkoušet také na povelu PImagePoint, který slouží pro zobrazení bodu na zadané souřadnici. Povel nakreslí na zadaných souřadnicích bod o zadané velikosti. Bod se nakreslí aktuální barvou pera, kterou lze nastavit procedurou ImagePenColor. Vyzkoušejte si několik příkladů pro seznámení se se způsobem označování souřadnic grafické polohy:


Call ImagePoint(  0,   0,  2)   'levý  horní roh 
Call ImagePoint(  0, 100,  2)   'levý  dolní roh 
Call ImagePoint(100,   0,  2)   'pravý horní roh 
Call ImagePoint(100, 100,  2)   'pravý dolní roh 
Call ImagePoint( 50,  50, 10)   'uprostřed, větší bod
Jistě jste si všimli, že jsme nyní zapsali před povel příkaz Call. Ten se musí uvádět před některými povely, pokud se zadávají parametry povelu v závorkách. Pokud byste tak neučinili, nahlásil by vám systém chybové hlášení „Chyba kompilace, při volání Sub nelze použít rodiče”. Další možností, jak psát uvedené povely je uvádět parametry funkcí jako seznam za povelem, aniž by byly umístěny v závorkách. V dalším textu však bude až na vyjímky používáno příkazu Call z důvodu zachování způsobu parametrů s jinými jazyky systému.

Souřadnice grafického okna se použijí i pro kreslení geometrických tvarů pomocí povelů. Možné je kreslit čáru povelem ImageLine, obdélník povelem ImageRectangle, kružnici nebo elipsu povelem ImageEllipse a obdélník se zaoblenými rohy povelem ImageRoundRect. Povelem ImageTriangle je možné nakreslit trojúhelník, což není pomocí myši možné. Pomocí povelů je možné také kreslit povelem ImageArc část křivky a povelem ImagePie kruhovou výseč. Vyzkoušejte si kreslení základních geometrických tvarů:


Call ImageLine(20, 20, 50, 100)           'nakreslí čáru 
Call ImageRectangle(10, 10, 100, 100)     'nakreslí čtverec 
Call ImageEllipse(30, 30, 120, 120)       'nakreslí kružnici 
Call ImageEllipse(30, 30, 120, 60)        'nakreslí elipsu 
Call ImageTriangle(10,100,55,10,100,100)  'nakreslí trojúhelník 

Call ImageArc(0,0,100,100, 50,0,0,50)     'levý  horní čtvrtkruh
Call ImagePie(0,0,100,100, 50,100,100,50) 'pravý dolní čtvrtkruh


OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz
předchozí lekce (1.06) obsah kurzu následující lekce (1.08)