Michal Kyžňanský / 28. 09. 2005, 00:00
Grafika je to, čo nám dovoľuje zabaliť perfektné algoritmy do krásneho a vzhľadného obalu pre užívateľa. Ale samozrejme aj vytvoriť kresliace programy, grafické softwary a všeličo iné. Možnosti sú nekonečné. Grafika dnes hýbe svetom. Poďme sa na ňu pozrieť zblízka.
Trieda Canvas je súčasťou mnohých komponent a v C++ Builderi, slúži ako kresliaca plocha. Obsahujú ju napríklad aj formulár, Image a iné.
Ukážeme si, ako nakresliť štvorec na určité miesto. Do formulára vložíme Button a premenujeme si ho na Nakresli. Po jeho stlačení sa vykoná príkaz, ktorý nakreslí štvorec.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->Canvas->Rectangle(45,35,190,185);
}
Namiesto this pokojne môže byť Form1, resp. meno, ktoré ste dali formuláru.
Poznáme však ešte jeden spôsob, ako inicializovať Canvas, a to priradením premennej. Aby sme nemuseli stále vypisovať Canvas->nejaký príkaz. Inicializácia je nasledovná:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCanvas *g;
g = this->Canvas;
g->Rectangle(45,35,190,185);
}
Teraz nám už stačí vždy, keď chceme niečo nakresliť použiť formuláciu g-> a za tým príkaz na kreslenie, kruhu, štvorca atď.
Niektoré základné funkcie triedy TCanvas:
Draw( ) |
Vykreslí grafiku – bitmapu, ikonu a pod. |
Ellipse( ) |
Nakreslí Kružnicu definovanú 2 bodmi |
FillRect( ) |
Vyplní farbou ohraničený Rectangle |
LineTo( ) |
Nakreslí priamku z aktuálnej pozície pera k zadanému bodu |
MoveTo( ) |
Nastaví aktuálnu pozíciu pera bodmi x,y |
Polygon( ) |
Nakreslí mnohouholník |
Teraz si program na demonštráciu niektorých metód konkrétne MoveTo( ) a LineTo( ). Pôjde o program, ktorý nám pri kliknutí myšou na určitú pozíciu spojí tento bod priamkou s predchádzajúcim bodom. V tomto programe si tiež ukážeme ako funguje udalosť OnMouseDown.
Udalosti sa nachádzajú v ľavom dolnom roku, menu Object Inspector v záložke Events. Stačí poklepať dvakrát na zvolenú udalosť a hneď sa nám vyhodí ( v prípade udalosti mMouseDown ) niečo takéto:
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
}
Syntax programu je takýto:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TCanvas *g; //inicializácia a priradenie plátna pointru g
g = Image1->Canvas;
g->MoveTo(50,28); //nastavenie pozície pera, aby nebolo mimo plátna
}
//---------------------------------------------------------------------------
//udalosť kliknutie myši na určitú pozíciu obsahuje definované body X a Y, ktoré nám určujú
//presne, na akú pozíciu sme klikli
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TCanvas *g;
g = Image1->Canvas;
DoubleBuffered=true; //ide o zabezpečenie toho, aby obraz
//neblikal pri rýchlom klikaní, teda dvojité bufferovanie
g->LineTo(X,Y); //príkaz na spojenie bodu s miestom, kde sme klikli.
}
V budúcom článku si povieme viac o udalostiach, najmä čo sa týka myšacích udalostí, a vyrobíme si ďalšie kresliace programy, ktoré už budú pripomínať funkcie známe zo Skicáru.
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk