Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ООП / C++ / Lab3C / ex1 / Unit1

.cpp
Скачиваний:
65
Добавлен:
18.02.2017
Размер:
3.62 Кб
Скачать
//---------------------------------------------------------------------------

#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