Вывод векторной графики. Прерывание работы программы.

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

Вывод векторной графики. Прерывание работы программы.

Сообщение Matv » 27.04.2004 (Вт) 8:15

Извиняюсь за дилетантство, т.к. грызу VB6 самостоятельно.
Кратко о программе. Считываются данные из DXF файла (линии, дуги, окружности, полилинии), апроксимируются отрезками, затем формируются замкнутые контура, анализируется вложенность, производится разбивка внешней или внутренней области на трапеции и т.д. и т.п.
Вся работа программы иллюстрируется выводом графики в PictureBox с использованием методов Line, Circler, Pset и API функции Polygon.
Существующие проблемы:
1. При интенсивном выводе графических элементов отображение происходит рывками (порциями), некоторые этапы не успевают отобразиться. Использование метода Refresh не помогает, а применение функции DoEvents сильно замедляет работу, если она применяется внутри циклов и мало помогает, если вне. Попытка использовать элемент управления Timer с ежесекундным Refresh и DoEvents не помогла. Пытаюсь производить регенерацию окна через определённое число циклов. Нет ли широко используемых, но неизвестных мне способов улучшения вывода графики?
2. Желательно реализовать возможность «аварийного» прерывания выполнения программы с возвратом в исходную форму. Однако программа не реагирует на нажатия кнопок, «крестика», Ctrl-C до завершения текущего цикла (а он может длиться несколько минут). Применение события KeyPress не помогает, Timer – тоже. Что делать? Чаще расставлять DoEvens в ущерб быстродействию? Или есть другие способы? (Уменьшать количество выводимой графики не хотелось бы).
Всем заранее благодарен.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.04.2004 (Вт) 10:15

Вот маньяк ведь, а ещё новичком прикидывается :)
Попробуй послать пикчербоксу WM_SETREDRAW и отключить его таким образом, а потом включить, но что получицца - не знаю...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


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

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

Сейчас этот форум просматривают: Google-бот, The trick и гости: 5

    TopList