Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 16:18   #1
Оля1990
 
Регистрация: 25.04.2009
Сообщений: 3
По умолчанию Гафика в Делфи!!!!!

Блин 2 недели уже мучаюсь не получается и все(((((Мне нужно нарисовать треугольник закращенный а потом он должен вращаться вокруг одной из вершин(((Вот что я сделала теперь надо как-то закрашивать а потом стирать!!!Но как???
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
With Form1.Canvas do
begin
Polygon([point(150,250),point(150,150),point (250,150)]);
Rectangle(0,0,Form1.ClientHeight,Fo rm1.ClientHeight);
Polygon([point(50,150),point(150,150),point( 150,250)]);
Rectangle(0,0,Form1.ClientHeight,Fo rm1.ClientHeight);
Polygon([point(50,150),point(150,150),point( 150,50)]);
Rectangle(0,0,Form1.ClientHeight,Fo rm1.ClientHeight);
Polygon([point(150,50),point(150,150),point( 250,150)]);
Rectangle(0,0,Form1.ClientHeight,Fo rm1.ClientHeight);
Brush.Color:=clRed;
end;
end;
Мозг уже пухнит((((
Оля1990 вне форума Ответить с цитированием
Старый 03.05.2009, 19:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Мозг уже пухнит((((
правильно говорить - пухнет

на onTimer процедуру:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with Form1.Canvas do
  begin
   {стираем старый}
    Canvas.Brush.Color := clWhite;
    Canvas.Pen.Color := clWhite;
    Polygon([point(X0, Y0), point(X1, Y1), point(X2, Y2)]);

  {вычисляем новые (вращать будем вокруг вершины X1,Y1}
    X0 := round(100 * cos(Angle / 30 * pi + pi / 2) + X1);
    Y0 := round(100 * sin(Angle / 30 * pi + pi / 2) + Y1);

    X2 := round(100 * cos((Angle - 15) / 30 * pi + pi / 2) + X1);
    Y2 := round(100 * sin((Angle - 15) / 30 * pi + pi / 2) + Y1);

    Canvas.Brush.Color := clRed;
    Canvas.Pen.Color := clBlack;
    Polygon([point(X0, Y0), point(X1, Y1), point(X2, Y2)]);

    Angle := Angle + DeltaAngle;
  end;
end;
на Form onCreate:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Angle := 0;
  DeltaAngle := 0.5;
  X1 := 150;
  Y1 := 150;
  Timer1.Interval := 50;
  Timer1.Enabled := true;
end;
на Form OnPaint:
Код:
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Brush.Color := clWhite;
  Canvas.Rectangle(0, 0, Form1.ClientHeight, Form1.ClientHeight);

  X0 := round(100 * cos(Angle / 30 * pi + pi / 2) + X1);
  Y0 := round(100 * sin(Angle / 30 * pi + pi / 2) + Y1);
  X2 := round(100 * cos((Angle - 15) / 30 * pi + pi / 2) + X1);
  Y2 := round(100 * sin((Angle - 15) / 30 * pi + pi / 2) + Y1);
  Canvas.Brush.Color := clRed;
  Canvas.Pen.Color := clBlack;
  Canvas.Polygon([point(X0, Y0), point(X1, Y1), point(X2, Y2)]);
end;
описание переменных:
Код:
  public
    { Public declarations }
    Angle: double;
    DeltaAngle: double;
    X0, Y0,
    X1, Y1,
    X2, Y2: integer;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
БД в делфи Neymexa Помощь студентам 29 29.01.2009 20:32
Делфи 7 Lemo Софт 1 30.12.2008 14:21
С Делфи На Си++ MAKEDON Свободное общение 3 22.07.2008 14:39
Делфи ozhjog Свободное общение 4 20.05.2007 21:06