Очень прошу помочь разобраться с программой. Прокомментируйте пожалуйста код
PHP код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int sqr( int v )
{
return v*v;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
// TCanvas *canv = PaintBox1->Canvas;
// canv->Brush->Color = clBtnFace;
// canv->FillRect( PaintBox1->ClientRect );
PaintBox1->Canvas->Brush->Color = clBtnFace;
if (p_c == 2)
{
int r,
dx = p[1].x - p[0].x,
dy = p[1].y - p[0].y;
double rty= sqr(dx) + sqr(dy) ;
r = (int)sqrt(rty);
PaintBox1->Canvas->Ellipse( p[0].x - r, p[0].y - r,
p[0].x + r, p[0].y + r );
PaintBox1->Canvas->MoveTo( p[1].x, p[1].y );
PaintBox1->Canvas->LineTo(
(int) (p[0].x - dx / 2 - sqrt(3.0) / 2.0 * dy),
(int) (p[0].y + sqrt(3.0) / 2.0 * dx - dy / 2) );
PaintBox1->Canvas->LineTo(
(int) (p[0].x - dx / 2 + sqrt(3.0) / 2.0 * dy),
(int) (p[0].y - sqrt(3.0) / 2.0 * dx - dy / 2) );
PaintBox1->Canvas->LineTo( p[1].x, p[1].y );
}
PaintBox1->Canvas->Brush->Color = clBlue;
for( int i = 0; i < p_c; i++ )
PaintBox1->Canvas->Ellipse( p[i].x - 3, p[i].y - 3,
p[i].x + 3, p[i].y + 3 );
if (p_c >1) { p_c = 0;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
p_c = 0;
drag_i = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
if ( (drag_i = findp( X,Y )) >= 0 )
return;
if (p_c < 2)
{
p[p_c].x = X;
p[p_c].y = Y;
p_c++;
PaintBox1Paint(Sender);
}
}
//---------------------------------------------------------------------------
int TForm1::findp( int x, int y )
{
for( int i = 0; i < p_c; i++ )
if (sqr(x - p[i].x) + sqr(y - p[i].y) <= 5*5)
return i;
return -1;
}
void __fastcall TForm1::PaintBox1MouseMove(TObject *Sender, TShiftState Shift, int X,
int Y)
{
if (drag_i < 0) return;
p[drag_i].x = X;
p[drag_i].y = Y;
// PaintBox1->Invalidate ();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
drag_i = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseLeave(TObject *Sender)
{
drag_i = -1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
PaintBox1->Invalidate ();
}