Масштаб графика в реальном времени.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Лёха
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 30.04.2005 (Сб) 9:44

Масштаб графика в реальном времени.

Сообщение Лёха » 18.06.2005 (Сб) 4:56

Не знаю с чего начать ...
Ну да ладно начну.
Код: Выделить всё
Picture1.Scale (0, 5000)-(30000 , 0)

Высота Picture1=5000 точек
По прерыванию Timer1 через USB у меня приходят двухбайтные данные от 0 до 4095 .
По этим данным я рисую график. Это всё работает, но если приходящие данные (например) приходят в диапазоне от 0 до 1000, то возникают две проблеммы:
1. Примерно пятая часть Picture1 пустая.
2. График очень маленький и его трудно рассмотреть.
Мне нужно сделать масштабируемый график:
1.
Код: Выделить всё
Picture1.Scale (0, 510)-(30000 , 0)

Высота Picture1=510 точек
2. Например первые 10 данных меньше 500. Вывести их в Picture1 без изменений. Следующее пришло значение 800, тогда нужно изменить Scale на 800+10) и вывести его в Picture1, при этом нужно сохранить пропорции ранее выведенных данных.
Так как данные у меня записываются в файл, то я конечно могу перерисовать их заново с новым Scale, но это когда у меня мало данных, а у меня их 1000 байт в секунду.
Может есть какие нибудь идеи?
Лёха.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 19.06.2005 (Вс) 1:23

Ну, можно юзать API-функцию StretchBlt на созданный в памяти DC и обратно. Плюс: при этом обходится процесс построения графика, работа идет с готовым изображением на всей картинке. Минус: точность графика может пострадать - как никак, сжатие картинок никодга особой красотой не отличалось.
Листинги не горят!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.06.2005 (Чт) 22:16

Faust писал(а):Ну, можно юзать API-функцию StretchBlt на созданный в памяти DC и обратно.

А можно безо всяких API вызвать PaintPicture - там та же самая функциональность.
Изображение

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 24.06.2005 (Пт) 4:17

Попробуй покопать в сторону WMF, это конечно слегка гиморно, но если разобраться - то это может помочь. (тобишь работать не с растовой, а векторной графикой).
Копать в сторону: CreateMetaFile или CreateEnhMetaFile
Заодно вопрос: График бегущий?
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 24.06.2005 (Пт) 13:05

tyomitch писал(а):
Faust писал(а):Ну, можно юзать API-функцию StretchBlt на созданный в памяти DC и обратно.

А можно безо всяких API вызвать PaintPicture - там та же самая функциональность.

Так ведь погоня за "кровавым FPS"... Быстродействие StretchBlt поболя будет.
Листинги не горят!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 128

    TopList  
cron