Добавил:
sergey123
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
double a=50;
double Ang=45;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
double AngleToRad(double angle) {return (angle *3.1415) / 180.0;};
void __fastcall TForm1::PaintPaint(TObject *Sender)
{
int H=Paint->Height;
int W=Paint->Width;
int x1,x2,x3,x4,y1,y2,y3,y4;
int i;
double angle=AngleToRad(Ang);
int xc=W/2;
int yc=H/2;
x1=xc-2*a*cos(angle);
x2=xc+2*a*sin(angle);
x3=xc+2*a*cos(angle);
x4=xc-2*a*sin(angle);
y1=yc-2*a*sin(angle);
y2=yc-2*a*cos(angle);
y3=yc+2*a*sin(angle);
y4=yc+2*a*cos(angle);
Paint ->Canvas ->Pen ->Color = clYellow;
Paint -> Canvas->Brush->Color=clYellow;
Paint -> Canvas-> MoveTo(x1,y1);
Paint->Canvas->LineTo(x2,y2);
Paint->Canvas->LineTo(x3,y3);
Paint->Canvas->LineTo(x4,y4);
Paint->Canvas->LineTo(x1,y1);
Paint -> Canvas -> FloodFill(xc,yc, clYellow, fsBorder);
angle = AngleToRad(Ang-45);
int x11,x22,x33,x44,y11,y22,y33,y44;
x11=(x2-x1)/2+x1-a;
y11=(y2-y1)/2+y1-a;
x22=(x2-x1)/2+x1+a;
y22=(y2-y1)/2+y1+a;
x33=(x2-x1)/2+x1+a*cos(angle);
y33=(y2-y1)/2+y1+a*sin(angle);
x44=(x2-x1)/2+x1-a*cos(angle);
y44=(y2-y1)/2+y1-a*sin(angle);
Paint ->Canvas ->Pen ->Color = clGreen;
Paint -> Canvas->Brush->Color=clGreen;
Paint->Canvas->Arc(x11,y11,x22,y22,x33,y33,x44,y44);
Paint -> Canvas-> MoveTo(x33,y33);
Paint->Canvas->LineTo(x44,y44);
angle = AngleToRad(Ang+45);
Paint -> Canvas -> FloodFill(x33,y33-5, clGreen, fsBorder);
x11=(x3-x2)/2+x2-a;
y11=(y3-y2)/2+y2-a;
x22=(x3-x2)/2+x2+a;
y22=(y3-y2)/2+y2+a;
x33=(x3-x2)/2+x2+a*cos(angle);
y33=(y3-y2)/2+y2+a*sin(angle);
x44=(x3-x2)/2+x2-a*cos(angle);
y44=(y3-y2)/2+y2-a*sin(angle);
Paint->Canvas->Arc(x11,y11,x22,y22,x33,y33,x44,y44);
angle = AngleToRad(Ang+135);
x11=(x4-x3)/2+x3-a;
y11=(y4-y3)/2+y3-a;
x22=(x4-x3)/2+x3+a;
y22=(y4-y3)/2+y3+a;
x33=(x4-x3)/2+x3+a*cos(angle);
y33=(y4-y3)/2+y3+a*sin(angle);
x44=(x4-x3)/2+x3-a*cos(angle);
y44=(y4-y3)/2+y3-a*sin(angle);
Paint->Canvas->Arc(x11,y11,x22,y22,x33,y33,x44,y44);
angle = AngleToRad(Ang+225);
x11=(x1-x4)/2+x4-a;
y11=(y1-y4)/2+y4-a;
x22=(x1-x4)/2+x4+a;
y22=(y1-y4)/2+y4+a;
x33=(x1-x4)/2+x4+a*cos(angle);
y33=(y1-y4)/2+y4+a*sin(angle);
x44=(x1-x4)/2+x4-a*cos(angle);
y44=(y1-y4)/2+y4-a*sin(angle);
Paint->Canvas->Arc(x11,y11,x22,y22,x33,y33,x44,y44);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
a=TrackBar1->Position;
Paint->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar2Change(TObject *Sender)
{
Ang = TrackBar2->Position;
Paint->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
Ang=Ang+TrackBar3->Position/10;
Paint->Invalidate();
}
//---------------------------------------------------------------------------
Соседние файлы в папке ex1