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 Φφ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) |