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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2013, 18:35   #1
Failed_experiment
Новичок
Джуниор
 
Регистрация: 19.05.2013
Сообщений: 1
По умолчанию Таймер

Здравствуйте, форумчане!
Прошу помочь с решением задачи, которая состоит в следующем: смоделировать работу спирографа, показать динамику процесса.
Мне удалось безошибочно написать ту часть программы, которая выводит на экран только "путь" той самой заветной точки без прорисовки окружностей (добавить их - не проблема). Но я не знаю, как показать динамику, а точнее просто не умею работать с таймером в делфи.
Итак, подытожим: как сделать так, чтобы "рисовалось помедленнее"?

Кусочек кода:
х0, у0 - координаты центра координатной оси
R - радиус большой окружности с центром в (х0, у0)
mR - радиус малой окружности, которая "катится" по большой
d - расстояние, на котором находится точка, по малому радиусу
Код:
with Form1.Canvas do
begin grad:=0;
repeat
ug2:=6.28*grad/360;
x:=(R+mR)*cos(ug2) - d*cos((R+mR)*ug2/mR);
y:=(R+mR)*sin(ug2) - d*sin((R+mR)*ug2/mR);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clGreen;
grad:=grad+0.1;
until (grad>=360);
end;
Заранее большое спасибо...

Последний раз редактировалось Stilet; 19.05.2013 в 23:36. Причина: решила проблему банальным sleep(), всем спасибо, извините за беспокойство
Failed_experiment вне форума Ответить с цитированием
Старый 19.05.2013, 19:34   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вам нужно придумать набор параметров, однозначно характеризующих состояние Вашей системы на определенный момент времени. Вероятно, это уже есть.

Нужно написать фрагмент кода, который рисует изображение, соответствующее определенному состоянию системы. Вероятно, основная часть этого фрагмента уже написана Вами между "repeat" и "grad:=grad+0.1;".

Теперь создаете таймер, в его обработчике изменяем состояние (в данном случае grad:=grad+0.1, после чего инициируем перерисовку.

Цикл при этом организует сама ОС, поэтому существующий у Вас цикл repeat не нужен.
s-andriano вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таймер nattaella Компоненты Delphi 1 22.06.2011 21:59
таймер IvaneOK Общие вопросы C/C++ 7 31.05.2011 20:14
Таймер Sheva144 C++ Builder 2 19.04.2011 18:24
таймер Tema_666 Общие вопросы Delphi 6 03.03.2011 09:20
Таймер Ins1De Общие вопросы C/C++ 2 26.05.2010 22:29