Определение класса, объектами которого являются многоугольники указанного типа., страница 5

else Form3->Show();

}

//--------------------------------------------------------------------------void __fastcall TForm1::N7Click(TObject *Sender) //пункт меню "Ввод точек->Отмена"

{

Form1->Image1->Canvas->Brush->Color=clWhite;

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

N2->Enabled=false;

mode=false; set=false; ss=false;

xx=xx1=yy=yy1=ind=click=px=py=0;

ResetPoly();

for(int i=0;i<100;i++)

{

msx[i]=0; msy[i]=0; xt[i]=0; yt[i]=0;

}

}

//--------------------------------------------------------------------------void DrawPoly() //функция прорисовки вершин полигона в виде кружков с указанием координат кождой вешины

{

for(int i=0; i<n1;i++)

{

Form1->Image1->Canvas->Ellipse(xt[i]-5,yt[i]-5,xt[i]+5,yt[i]+5);

sprintf(s1,"%.0lf,%.0lf",xt[i],yt[i]);

Form1->Image1->Canvas->TextOutA(xt[i],yt[i]-3,s1);

s1[10]=NULL;

}

}

//--------------------------------------------------------------------------void rot(double la, double l2, double l3) //функция вызывающая функцию поворота полигона

//на угол la

{

if(l2==0 && l3==0) dom2->rotate(la,px,py); //вокруг точки заданной мышью

else dom2->rotate(la,l2,l3); //вокруг точки, координаты которой ввел пользователь

}

//--------------------------------------------------------------------------void strt(double a, double b) //функция, активизирующая главную форму и прорисовывающая точку с координатами x=a,y=b

//вокруг которой будет выполняться вращение многоугольника

{

set=true;

Form1->SetFocus();

Form1->Image1->Canvas->Brush->Color=clWhite;

Form1->Image1->Canvas->Rectangle(0,0,Form1->Image1->Width,Form1->Image1->Height);

dom2->show(0, 0, Form1->Image1->Width, Form1->Image1->Height);

Form1->Image1->Canvas->Brush->Color=clWhite;

DrawPoly();

Form1->Image1->Canvas->Brush->Color=clBlue;

Form1->Image1->Canvas->Ellipse(a-4,b-4,a+4,b+4);

Form1->Image1->Canvas->Brush->Color=clWhite;

px=a;py=b;

}

//--------------------------------------------------------------------------void strr() //функция, активизирующая главную форму для того, чтобы пользователь мог ввести точку, вокруг которой будет

//происходить вращение полигона, с помощью мыши

{

set=true;

ss=true;

Form1->SetFocus();

}

//--------------------------------------------------------------------------void __fastcall TForm1::Image1Click(TObject *Sender)  //действия, выполняющиеся после каждого нажатия мышью на графическое поле

{

if(mode)

{

click++;

if(click==1) //при первом клике прорисовывается только одна вершина полигона

{

N2->Enabled=true;

TPoint f;

f=Form1->CalcCursorPos();

xx=f.x;

yy=f.y;

Image1->Canvas->Ellipse(xx-5,yy-5,xx+5,yy+5);

sprintf(s1,"%.0lf,%.0lf",xx,yy);

Form1->Image1->Canvas->TextOutA(xx,yy-3,s1);

s1[10]=NULL;

xx1=xx;

yy1=yy;

addPoint(xx,yy); //добавляется точка в полигон

}

if(click==2) //при втором клике рисуются две вершины и линия между ними

{

N2->Enabled=true;

TPoint f;

f=Form1->CalcCursorPos();

xx=f.x;

yy=f.y;

Image1->Canvas->Ellipse(xx-5,yy-5,xx+5,yy+5);

line(xx1,yy1,xx,yy);

sprintf(s1,"%.0lf,%.0lf",xx,yy);

Form1->Image1->Canvas->TextOutA(xx,yy-3,s1);

s1[10]=NULL;

xx1=xx; yy1=yy;

addPoint(xx,yy);

}

if(click>2) //при последующих кликах

{

Form1->Image1->Canvas->Brush->Color=clWhite;

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

N2->Enabled=true;

TPoint f;

f=Form1->CalcCursorPos();

xx=f.x;

yy=f.y;

addPoint(xx,yy);

xx1=xx; yy1=yy;