Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   задержка на 1мс (http://forum.oszone.net/showthread.php?t=29386)

Guest 12-10-2004 13:38 203658

Помогите! Нужно зделать задержку 1мс при рисовании геометрических фигур по точка. Sleep() не роботает как надо. Он задерживает начало роботы програмы.

hasherfrog 12-10-2004 13:55 203659

Подробнее, пожалуйста. Что за "по точка"?

Guest 12-10-2004 14:29 203660

Линия рисуется по точках. Из файла считиваються координаты начала и конца линии, и надо чтобы было видно как рисуется каждая точка етой линии. Для етого нужна задержка.

hasherfrog 12-10-2004 14:44 203661

Опять непонятно. "Каждая точка линии" - это растровый пиксел? Или отрезок до координаты + сама координата?

Guest 12-10-2004 14:48 203662

да ето пиксел

hasherfrog 12-10-2004 14:54 203663

Как я понимаю, Вы работаете под виндой. Тогда у Вас есть два пути:
1. Использовать свой GDI для рисования линий. Берёте алгоритм Брезенхема (лучше оптимизированный) и пишите свою Line()
2. Использовать родной GDI. Тогда процедура отрисовки линии приобретёт вид множественного вызова стандартной Line() для маленького кусочка линии, соизмеримого по размеру с пикселом. Используя текущий dpi монитара, Вы можете приблизительно прикинуть, сколько занимает одна точка, "настрогать" ил обычной линии много маленьких и отрисовывать их.

pva 18-11-2004 12:30 273784

Есть функция LineDDA или как-то так (ищи в хелпе). Она запрашивает начальную и конечную точки отрезка и функцию, в которую будет пихать каждую координату точек в этом отрезке. Sleep() нужно делать внутри этой функции, напр.:

:code:
void __stdcall drawPts(POINT* pt, LPARAM dc)
{
PutPixel(HDC(dc), pt->x, pt->y, 0);
Sleep(1);
}

...

LineDDA(0, 0, 10, 10, drawPts, LPARAM(dc));
:/code:

Пример не точный, а только показывает саму идею; корректируй его в соответствии с хелпом.


Время: 23:04.

Время: 23:04.
© OSzone.net 2001-