![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
можна ли рисовать на битмапе в TThread
delphiForever © (2007-09-06 13:48:00)в OnCreate создаю глобальный TBitMap, на котором рисую в потоке, после завершения рисования оптравляю SendMessage компоненту который отрисовывает уже готовую картинку. Отрисовка анимации происходит в интервале до 100 мс.
Рано или поздно, битмар куда-то навсегда теряется и вывод картинки ни к чему не приводит.
delphiForever (2007-09-06 15:37:00) [1]
> umbra ©
> clickmaker ©
> Anatoly Podgoretsky ©
> Инс ©
всем спасиба...
Anatoly Podgoretsky (2007-09-06 15:28:00) [2]> delphiForever (06.09.2007 14:35:14) [14]
Тем что любой другой в любой момент изменит его.
Кроме того VCL не потокобезопасна, куча глобальных переменных.
delphiForever (2007-09-06 14:35:00) [3]
> Канва это VCL или общее слово?
я уже понял ето после того как задал вопрос.
> Anatoly Podgoretsky © (06.09.07 14:22) [7]
> Потому что глобальный.
а можна пожалуйста подробнее, причем тут глобальный, как ето влияет
Инс (2007-09-06 14:32:00) [4]
> Канва это VCL или общее слово?
Я так понял, VCL
Anatoly Podgoretsky (2007-09-06 14:32:00) [5]> delphiForever (06.09.2007 14:28:09) [9]
А если он глобальный, то какая разница, рано или поздно испортишь, создавай в потоке или вне его.
Anatoly Podgoretsky (2007-09-06 14:31:00) [6]> delphiForever (06.09.2007 14:28:09) [9]
Канва это VCL или общее слово?
Инс (2007-09-06 14:31:00) [7]
> и выводить его на канву, тоже сразу в том же потоке синхронизации
> не требуется
Еще как требуется. Нужно просто подготовить битмап и аккуратно передать в основной поток, который и выведет.
delphiForever (2007-09-06 14:28:00) [8]хорошо, а если в потоке создать битмап и выводить его на канву, тоже сразу в том же потоке синхронизации не требуется
Anatoly Podgoretsky (2007-09-06 14:22:00) [9]> delphiForever (06.09.2007 13:48:00) [0]
Потому что глобальный.
Инс (2007-09-06 14:22:00) [10]
> главное можно ли использовать такой подход с потоком, на
> мой взгляд все вроде бы правильно, может точно где-то в
> коде ошибка
Если к этому TBitmap нет обращения из других потоков, и если вы его потом аккуратно передаете в основной, то можно.
delphiForever (2007-09-06 14:00:00) [11]
> "битмар куда-то навсегда теряется"
но при обращении к нему можна прочитать его размеры
delphiForever (2007-09-06 13:58:00) [12]главноеможно ли использовать такой подход с потоком, на мой взгляд все вроде бы правильно, может точно где-то в коде ошибка
clickmaker (2007-09-06 13:57:00) [13]
> а при чем тут утечка ресурсов
"битмар куда-то навсегда теряется"
delphiForever (2007-09-06 13:54:00) [14]
> хорошо бы код привести
очень большой и запутанный я сам там иногда теряюсь, да и компоненты нужные нужно будет устанавливать
> а уверен, что дело не в утечке ресурсов?
а при чем тут утечка ресурсов
clickmaker (2007-09-06 13:51:00) [15]а уверен, что дело не в утечке ресурсов?
umbra (2007-09-06 13:50:00) [16]хорошо бы код привести.