![]() |
Помогите! Нужно зделать задержку 1мс при рисовании геометрических фигур по точка. Sleep() не роботает как надо. Он задерживает начало роботы програмы.
|
Подробнее, пожалуйста. Что за "по точка"?
|
Линия рисуется по точках. Из файла считиваються координаты начала и конца линии, и надо чтобы было видно как рисуется каждая точка етой линии. Для етого нужна задержка.
|
Опять непонятно. "Каждая точка линии" - это растровый пиксел? Или отрезок до координаты + сама координата?
|
да ето пиксел
|
Как я понимаю, Вы работаете под виндой. Тогда у Вас есть два пути:
1. Использовать свой GDI для рисования линий. Берёте алгоритм Брезенхема (лучше оптимизированный) и пишите свою Line() 2. Использовать родной GDI. Тогда процедура отрисовки линии приобретёт вид множественного вызова стандартной Line() для маленького кусочка линии, соизмеримого по размеру с пикселом. Используя текущий dpi монитара, Вы можете приблизительно прикинуть, сколько занимает одна точка, "настрогать" ил обычной линии много маленьких и отрисовывать их. |
Есть функция 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-