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;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.