Michal Kyžňanský / 05. 10. 2005, 00:00
Dnes budeme pokračovať v spoznávaní a oboznamovaní sa s funkciami, ktoré nám ponúka grafické plátno. Vytvoríme si jednoduchý program, ktorý budú obsahovať známu funkciu zo Skicáru a iných grafických editorov.
Grafické plátno disponuje mnohými funkciami, ktoré nám môžu byť veľmi užitočné. Základným ovládacím prvkom plátna je vždy myš, či už pri kreslení, alebo úpravách obrázkov a pod. Preto si najprv povieme o udalostiach OnMouseDown, OnMouseUp, OnMouseMove. Sú to tzv. myšacie udalosti. Všetky tieto udalosti majú spoločnú jednu základnú vlastnosť, a to, že presne nám označujú miesto, kde bolo kliknuté/pohnuté/odkliknuté myškou. Každá z týchto udalostí má zadefinované dva súradnicové body X a Y, ktoré udávajú pozíciu v pixloch na formulári/grafickom plátne.
OnMouseDown – stlačenie akéhokoľvek tlačidla na myši
OnMouseUp – uvoľnenie akéhokoľvek tlačidla na myši
OnMouseMove – pohyb kurzora
Pri udalostiach týkajúcich sa myšky máme dva špeciálne parametre na zistenie, akým tlačidlom myši bola udalosť vyvolaná. Prvým parametrom je Button.
- mbLeft – ľavé tlačidlo
- mbRight - pravé tlačidlo
- mbCenter – stredné tlačidlo
Príklad:
if(Button == mbLeft)
{ ShowMessage(“stlačili ste ľavé tlačidlo tlačidlo”); }
if(Shift.Contains(ssLeft) && (Shift.Contains(ssCtrl){
Edit1->Text = “Dobré ráno”;
}
#include <VCL.H>
#pragma hdrstop
TCanvas *g; //definujeme si pointer g typu TCanvas
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
g = Image1->Canvas; //inicializujeme grafickú plochu
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1Click(TObject *Sender)
{
g = Image1->Canvas; //priradenie premennej g vlastnosti Image
DoubleBuffered=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
//toto je udalosť pohyb myši
{
DoubleBuffered=true;
if(Shift.Contains(ssLeft)){ //podmienka ak je stlačené pravé tlačidlo myši
g->LineTo(X,Y); //pozícia pera je spojená s bodom so súradnicami X,Y
g->Pen->Width = Edit1->Text.ToInt(); //načítanie hrúbky pera z Edit1 ( v pixloch )
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
//toto je udalosť stlačenie tlačidla myši
{
g->MoveTo(X,Y); //pozícia pera je spojená s bodom so súradnicami X,Y
g->LineTo(X,Y); //pozícia pera je presunutá na súradnice X,Y
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
g->Pen->Color = clRed; //parameter nastavenia farby čiary
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
g->Pen->Color = clBlue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
g->Pen->Color = clGreen;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
g->Pen->Color = clBlack;
}
//---------------------------------------------------------------------------
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