nika.blog.matfyz.sk

Veronika Dropčová
veronika.dropcova(at)gmail.com

10 – náhodné farby

S farbami pri programovaní v Lazaruse sa stretávame veľmi často. Bohužiaľ, však, zatiaľ poznáme iba niekoľko farieb a aj to len v niekoľkých odtieňoch. Ale to sa zmení! Na tejto hodine sa naučíme používať príkazy, ktorými budeme môcť generovať farby od výmyslu sveta…

Možno ste už počuli o farebnom modeli RGB (red-green-blue). V princípe sa dá povedať, že akákoľvek farba sa dá vytvoriť pomocou týchto troch farieb, záleží na tom, ako ich „namiešame“.

Miešať farby budeme v príkaze RGB(číslo, číslo, číslo). Tri čísla, ktoré hovoria o troch farbách, pričom tieto čísla musia byť z rozsahu 0 – 255.

Tak napríklad:

clBlack = RGB(0,0,0)

clRed = RGB(128,0,0)

clGreen = RGB(0,128,0)

clBlue = RGB(0,0,255)

clGray = RGB(128,128,128)

clYellow = RGB(255,255,0)

clWhite = RGB(255,255,255)
Nie, nič z toho si pamätať nemusíte, ak to niekedy budete potrebovať, jednoducho si to vygooglite.
Skúsme sa teraz ale krátko zamyslieť, koľko farieb sa dá takto vytvoriť. Každú z troch uvedených farieb (červená, modrá, zelená) primiešavame v 256 rôznych odtieňoch. Spolu nám to teda dá 256*256*256 možností, čo je 16777216. Každá farba má tak teda nejaké svoje číslo. A keď sme už pri číslach – tie vieme náhodne generovať… že? Takže ak vygenerujeme nejaké náhodné číslo zo 16777216, dostaneme sa k náhodnej farbe. Pamätať si 16777216 je však vskutku náročné, preto budeme používať takýto zápis:
(napríklad)
Image1.Canvas.Pen.Color := random(256*256*256);
Samozrejme, náhodnú farbu vieme získať aj iným spôsobom, použitím príkazu RGB:
(napríklad)
Image1.Canvas.Pen.Color := RGB(random(256), random(256), random(256));  //vygeneruje úplne náhodnú farbu
alebo
Image1.Canvas.Pen.Color := RGB(random(256), 0, 0);  //vygeneruje farbu s náhodným červeným odtieňom (od čiernej až po červenú)
alebo
Image1.Canvas.Pen.Color := RGB(random(256), 0, random(256));  //vygeneruje náhodnú fialovú farbu (od červenej až po modrú)
Úlohy
1. Napíšte program, ktorý po kliknutí na tlačidlo vykreslí obdĺžnik na náhodnej pozícii, s náhodnými dĺžkami strán a s náhodnou farbou výplne.
2. Upravte predchádzajúci program tak, aby aj orámovanie obdĺžnika bolo rovnakej farby ako jeho vnútro.
3. Napíšte program, ktorý po kliknutí na tlačidlo vypíše text „Teším sa na test“ náhodnou farbou.
4. Napíšte program, ktorý po kliknutí na tlačidlo vykreslí vlajku skladajúcu sa z troch pruhov náhodných farieb.
5. Napíšte program, ktorý nakreslí 4 sústredné kruhy s rôznymi polomermi (napr. 20, 40, 60 a 80), pričom budú mať rôzne farby výplne.

Domáca úloha, deadline pre 2A1,2A2: 9.6.2016

Napíšte program, ktorý nakreslí 4 sústredné kruhy s rôznymi polomermi (napr. 20, 40, 60 a 80), pričom budú mať rôzne farby výplne.