Ошибка при рисовании на канве, Delphi

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Ошибка при рисовании на канве, Delphi

Сообщение paskal »

Сразу скажу, с графикой раньше вообще не работал.
В моей программе используется несколько потоков(нитей). Один поток берет данные с переходника USB-COM в реальном времени, другой их обрабатывает, третий по результатам обработки рисует графику. Рисование, естественно, идет непрерывно.
Все рисуется хорошо, но если потащить мышкой работающее окно, вылетает ошибка "Canvas does not allow draving". Происходит это на операции Canvas.CopyRect. Понимаю что причина где то в рисовании разными потоками на одну канву.
Какие способы устранения посоветуют мне более опытные программеры?
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Ошибка при рисовании на канве, Delphi

Сообщение Мурик »

Рисовать нужно в одном потоке, желательно основном.
Реклама
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: Ошибка при рисовании на канве, Delphi

Сообщение paskal »

Особенность программы такова, что процесс рисования идет в реальном времени непрерывно. Если я сделаю графику в основном потоке, программа повиснет.
А всё рисование идет в одном потоке. В других потоках не связанная с графикой обработка.
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
ДанилКоржов
Родился
Сообщения: 3
Зарегистрирован: Вт янв 16, 2018 23:18:46

Re: Ошибка при рисовании на канве, Delphi

Сообщение ДанилКоржов »

Делема у вас, но выход должен же быть ....
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
SIM31
Это не хвост, это антенна
Сообщения: 1363
Зарегистрирован: Чт апр 04, 2013 22:22:57
Откуда: Белгород, РФ

Re: Ошибка при рисовании на канве, Delphi

Сообщение SIM31 »

Я кидал на форму таймер, и внутри вызова таймера рисовал анимацию, работает превосходно, можно каждые 16 мс экран перерисовывать.
Реклама
Ответить

Вернуться в «Интеграция с ПК»