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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2011, 18:32   #1
Язь
 
Регистрация: 11.10.2011
Сообщений: 7
По умолчанию [Delphi] Изобретая колесо

Добрый вечер. В лабе с меня требуют изобретение колеса на Canvas, по сути имитацию движения.

Насколько я понял, либа канваса скудна до безобразия и поворота угла не имеет. Перемещать окружность колеса труда особого не занимает, вопрос в спицах в самом колесе. Решил две спицы собрать из 4 зациклинных линий, каждая должна проходить по 90 градусов и возвращаться в исходное положение, создавая имитацию неразрывного движения. В общем с тригонометрией у меня совсем туго, одна спица получилась, проходит ровно 90 градусов, но размер не сохраняет.

Сам быдлокод:
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
  if (alpha > 3.1415926535897932385/2) then begin
    alpha := 0;
  end;

  Form1.Image1.Canvas.FillRect(ClientRect);
  Form1.Image1.Canvas.Ellipse(a, b, c, d);
  Form1.Image1.Canvas.MoveTo(a+al, cl);
  Form1.Image1.Canvas.LineTo(a+Round(al*abs(sin(alpha))), Round(cl*abs(cos(alpha))));
  Inc(a); Inc(c); Inc(bl); alpha := alpha + (3.1415926535897932385/18);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := '20';
  Edit2.Text := '40';
  Edit3.Text := '60';
  Edit4.Text := '80';
  a := StrToInt(Edit1.Text);
  b := StrToInt(Edit2.Text);
  c := StrToInt(Edit3.Text);
  d := StrToInt(Edit4.Text);
  al := a;
  bl := b;
  cl := c;
  dl := d;
  alpha := 0;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  //ShowMessage(IntToStr(key)); //Key-codes

  if (Key = 37) then begin
    Button2.Click;              // Left
  end
  else if (Key = 38) then begin
                                // Up
  end
  else if (Key = 39) then begin
    Button3.Click;              // Right
  end
  else if (Key = 40) then begin // Down

  end;
end;
... как исправить баг?
Вложения
Тип файла: zip Лаба #10 (Вар 1).zip (205.0 Кб, 8 просмотров)
Язь вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
Колесо почему-то не крутится....ошибка в анимации. vedro-compota Мультимедиа в Delphi 8 08.06.2010 21:02
колесо прокрутки в RichEdit в Delphi TaYgA Компоненты Delphi 4 06.11.2009 23:04
Не работает колесо мышки в Visuale :( Slim Microsoft Office Excel 6 12.11.2007 21:20