xt[100], yt[100], //массивы координат вершин полигона
px,py, //координаты точки, вокруг которой будет вращаться полигон
xx,yy, //координаты текущей точки, указанной мышью в графическом поле
xx1,yy1; //координаты предыдущей точки, указанной мышью в графическом поле
const char* str[2]={"Точка попадает в многоугольник", "Точка не попадает в многоугольник"};
char s1[10]; //строка, в которую записываются координаты вершины полигона (отображается рядом с самой вершиной)
void strt(double a, double b); //функция, запускающаяся при выборе пользователем пункта меню
//Выполнение действия->Ручной ввод->применить
void strr(); //функция, запускающаяся если пользователь выбрал пункт меню Выполнение действия->Ввод с помощью мыши->указать
void close();//функция, запускающаяся при закрытии формы Действие
void rot(double la, double l2, double l3); //функция, реализующая поворот полигона и запускающаяся при выборе пользователем пункта меню
//Выполнение действия->Ввод с помощью мыши->Выполнить
//--------------------------------------------------------------------------void __fastcall TForm1::N3Click(TObject *Sender) //пункт меню "помощь"
{
Form2->Show();
}
//--------------------------------------------------------------------------void __fastcall TForm1::N4Click(TObject *Sender) //пункт меню "выход"
{
Form1->Close();
}
//--------------------------------------------------------------------------int getmaxx() //получение максимальных координат по х
{
return Form1->Image1->Width;
}
int getmaxy() //получение максимальных координат по у
{
return Form1->Image1->Height;
}
void line(int x0, int y0, int x1, int y1) //прорисовка линии
{
Form1->Image1->Canvas->MoveTo(x0,y0);
Form1->Image1->Canvas->LineTo(x1,y1);
}
//--------------------------------------------------------------------------void addPoint( double x, double y) //добавление точки в полигон (выполняется при любом нажатии мышью на графическое поле)
{
msx[ind]=x; msy[ind]=y; ind++;
delete dom2;
dom2 = new CPolygon(msx,msy, ind, (TColor)clr);
}
//--------------------------------------------------------------------------void ResetPoly() //удаление текущего и создание пустого полигона (выполняется при выборе пункта меню Ввод точек->Отмена)
{
delete dom2;
dom2 = new CPolygon(0,0,0,(TColor)clr);
}
//--------------------------------------------------------------------------void SPolygon::show(double xmin, double ymin, double xmax, double ymax) //отображение полигона
{
if(n<3) return;
int i;
n1=n;
TPoint *parray = new TPoint [n];
Form1->Image1->Canvas->Brush->Color=(TColor)clr;
for(i = 0; i < n; i++)
{
parray[i]=Point(p[i].x,p[i].y);
xt[i]=p[i].x; yt[i]=p[i].y;
}
DrawPoly(parray, n); //вызов дружественной функции прорисовки полигона
delete []parray;
}
//--------------------------------------------------------------------------void DrawPoly(TPoint* p, unsigned u) //прорисовка сформированного полигона
{
Form1->Image1->Canvas->Polygon(p,u-1);
}
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
N2->Enabled=false;
dom2 = new CPolygon(0,0,0,(TColor)clr); //при создании формы создается и полигон
}
//--------------------------------------------------------------------------void __fastcall TForm1::N2Click(TObject *Sender) //пункт меню "Выполнение действия"
{
if(mode) MessageBox(NULL, "Нельзя выполнить действие до тех пор, пока не будет сформирован многоугольник", "Ошибка", MB_ICONINFORMATION);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.