Показать сообщение отдельно
  #4  
Старый 21.02.2011, 00:21
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Я бы лопасти нарисовал в общ. виде так:
Код:
Const
  N = 3;     // к-во лопастей
  Xo = 150;  // Центр вентилятора
  Yo = 150;  // Центр вентилятора
  R = 100;   // Радиус лопасти
  v = 20;    // Толщина лопасти

Var
  M1, M2: TPoint;
  W, u: Real;

procedure TForm1.FormActivate(Sender: TObject);
begin
 Form1.Canvas.Pen.Width:= 3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled:= Not(Timer1.Enabled);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
 i: Integer;
begin
 W:= W + 5;
 u:= 0;
 Form1.Canvas.Pen.Color:= clBtnFace;
 Form1.Canvas.Brush.Color:= clBtnFace;
 Form1.Canvas.Rectangle(Xo-R-5, Yo-R-5, Xo+R+5, Yo+R+5);
 For i:= 0 To N - 1 Do
  begin
   u:= u + 360/N;
   M1.X:= Xo+Round(R*Cos((Pi/180)*(W+u)));
   M1.Y:= Yo+Round(R*Sin((Pi/180)*(W+u)));
   M2.X:= Xo+Round(R*Cos((Pi/180)*(W+u+v)));
   M2.Y:= Yo+Round(R*Sin((Pi/180)*(W+u+v)));
   Form1.Canvas.Pen.Color:= clBlack;
   Form1.Canvas.Brush.Color:= clRed;
   Form1.Canvas.Polygon([
    Point(Xo,Yo),
    Point(M1.X,M1.Y),
    Point(M2.X,M2.Y)]);
  end;
end;
__________________
If end Then begin;