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 Φφslicφ (ne pφsmenem). Viz tabulka hodnot barev:


-------------------------------------------
hodnota    konstanta    nßzev barvy
-------------------------------------------
$000000    clBlack      Φernß
$000080    clMaroon     kaÜtanov∞ Φervenß
$0000FF    clRed        sv∞tle Φervenß
$008000    clGreen      tmav∞ zelenß
$008080    clOlive      tmav∞ ₧lutß
$00FF00    clLime       sv∞tle zelenß
$00FFFF    clYellow     ₧lutß
$800000    clNavy       tmav∞ modrß
$800080    clPurple     tmav∞ fialovß
$808000    clTeal       tmav∞ modrozelenß
$808080    clDkGray     tmavoÜedß
$0C0C0C0   clLtGray     sv∞tle Üedß
$0FF0000   clBlue       modrß
$0FF00FF   clFushsia    fialovß
$0FFFF00   clAgua       modrozelenß
$0FFFFFF   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($0FFFFFF);   { bφlß barva Φßry }
ImagePenColor($00000FF);   { sv∞tle Φervenß barva Φßry }
ImagePenColor($0FF0000);   { 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($0FFFFFF);    { bφlß barva plochy }
ImageBrushColor($00000FF);    { sv∞tle Φervenß barva plochy}
ImageBrushColor($0FF0000);    { 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:


ImagePoint(  0,   0,  2);  { lev²  hornφ roh }
ImagePoint(  0, 100,  2);  { lev²  dolnφ roh }
ImagePoint(100,   0,  2);  { prav² hornφ roh }
ImagePoint(100, 100,  2);  { prav² dolnφ roh }
ImagePoint( 50,  50, 10);  { uprost°ed, v∞tÜφ bod }
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∙:

ImageLine(20, 20, 50, 100);          { nakreslφ Φßru }
ImageRectangle(10, 10, 100, 100);    { nakreslφ Φtverec }
ImageEllipse(30, 30, 120, 120);      { nakreslφ kru₧nici }
ImageEllipse(30, 30, 120, 60);       { nakreslφ elipsu }
ImageTriangle(10,100,55,10,100,100}; { nakreslφ troj·helnφk }

ImageArc(0,0,100,100, 50,0,0,50);    {lev²  hornφ Φtvrtkruh}
ImagePie(0,0,100,100, 50,100,100,50) {prav² dolnφ Φtvrtkruh}

p°edchozφ lekce (1.06) obsah kurzu nßsledujφcφ lekce (1.08)

OZOGAN, 1 Mßje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz