Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C# График  (Прочитано 17189 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ахматар
Гость
« : 30-10-2008 13:03 » 

Добрый день,
У меня тут такая вот проблемка стоит:

Нужно отобразить в окне динамический график. Обновление вида графика раз в 50мс,а поступление новой точки графика раз в 4мс. Графиков 5 штук + на каждом отображается по 1000 точек. Рисую прямо в canvas используя polyline.
По таймеру обновления экрана тупо добавляю новые полученные точки к polyline и удаляю лишее точки слева + сдвигаю его (нужно чтобы отображалось всегда последние 1000 точек на экране, так уж надо=) )
В общем все бы хорошо, но загвоздка тут в том, что грузит процессор сильновато на 60-65% примерно.

 Может кто подсказать или посоветовать как разгрузить процессор?

 Были умные мысли на тему того, чтобы использовать DirectDraw и внеэкранные поверхности для прорисовки и последующей подмены изображений(сейчас вот разбираюсь с этим, если у кого есть что-то об этом тоже был бы благодарен).
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 30-10-2008 13:05 » 

рисовать надо "в уме" , а перерисовывать на экране по таймеру. Тогда тормозюкать не будет Улыбаюсь
Записан

Ахматар
Гость
« Ответ #2 : 03-11-2008 09:29 » 

Алексей, а можно немного поподробнее про "в уме" ?=) если можно,то на примере=)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 03-11-2008 11:40 » 

ну то есть я имею в виду - не надо пытаться постоянно перерисовывать новую информацию, всё равно человек так быстро не умеет воспринимать, достаточно перерисовывать дискретно , с частотой 24 Гц или повыше.
А расчёт координат для вывода можно делать в озу , чтобы при очередной перерисовке не считать, а просто отрисовать .

Например, приходят данные: номер измерения N , его время - t, измерены параметры  A,B,C.  Запоминаешь в массиве этот замЕр, а так же считаешь некоторые промежуточные координаты для будущей отрисовки , скажем Y=(трёхэтажная формула от A, B, C)

Так ты имеешь набор точек для построения графика Y(t) . В момент вывода нужно лишь смещать и масштабировать ось t  и/или масштабировать ось Y

Вот типа этого )
Записан

Ахматар
Гость
« Ответ #4 : 06-11-2008 13:43 » new

Спасибо, вроде бы стало по приличнее=)
Записан
_serj_dev
Участник

ru
Offline Offline

« Ответ #5 : 01-09-2010 06:04 » 

А можно код посмотреть? Очень интересно.
Хотя сомневаюсь, что хозяин топика сюда еще заглянет.
« Последнее редактирование: 01-09-2010 06:36 от _serj_dev » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines