Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Рисавание графиков

42K
20 ноября 2008 года
tiger512
4 / / 20.11.2008
Требуется нарисовать график y = sin(45*t), причем так, что бы он рисовался постепенно. Я начал делать через Imagе, но не знаю как заставить изображение появляться постепенно(( При использовании sleep(100) окно виснет. Помогите, плиз. Если есть другой способ нарисовать, то тоже можете сказать:)
490
20 ноября 2008 года
frid-karatel
357 / / 15.09.2007
Вариант №1 - использовать компонент TTimer с параметром Interval = 100
Вариант №2 - вынести рисование в отдельный поток и там ставить Sleep(100)
1.9K
21 ноября 2008 года
Anton Chik
175 / / 26.09.2005
вместо Sleep в цикле можно использовать вот такую "прозрачную" паузу:
http://forum.codenet.ru/showthread.php?t=26832&highlight=%EF%E0%F3%E7%E0
288
21 ноября 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: tiger512
Требуется нарисовать график y = sin(45*t), причем так, что бы он рисовался постепенно. Я начал делать через Imagе, но не знаю как заставить изображение появляться постепенно(( При использовании sleep(100) окно виснет. Помогите, плиз. Если есть другой способ нарисовать, то тоже можете сказать:)



Для начала советую понять самому, почему "окно виснет". Если поймете, поймете и как сделать правильно.

246
21 ноября 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: Anton Chik
вместо Sleep в цикле можно использовать вот такую "прозрачную" паузу:
http://forum.codenet.ru/showthread.php?t=26832&highlight=%EF%E0%F3%E7%E0



это называется - поток через жопу, старики рассказывали, что так делали в Windows 3.1:)))

1.9K
21 ноября 2008 года
Anton Chik
175 / / 26.09.2005
2GIZMO:по большей части я имел в виду код
 
Код:
TDateTime t,tpause;
bool stop=false;
tpause=StrToDateTime("00:00:05");
t=Now();
while(!stop)
{
stop=(Now()-t)>tpause;
Application->ProcessMessages();
}
return;
42K
21 ноября 2008 года
tiger512
4 / / 20.11.2008
Народ, а можно немного попроще. Я с C++ билдером вообще дела не имел.
Что там надо создать и как. Почему поток виснет я догадываюсь)))
А вот как сделать так, что бы не вис - нет:)
P.S Я начал делать через таймер.
42K
21 ноября 2008 года
tiger512
4 / / 20.11.2008
Все. Я ступил.
Цитата:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

float T = 2*3.14*5;
x = 200*sin(omega1*itime+fi1);
y = 200*cos(omega2*itime+fi2);
x = floor(x);
y = floor(y);


Image1->Canvas->MoveTo(floor(x)+center_x,-floor(y)+center_y);
Image1->Canvas->LineTo(floor(x)+center_x+1,-floor(y)+center_y+1);


itime++;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог