p°edchozφ lekce (1.06) | obsah kurzu | nßsledujφcφ lekce (1.08) |
╚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
p°edchozφ lekce (1.06) | obsah kurzu | nßsledujφcφ lekce (1.08) |