Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

можна ли рисовать на битмапе в 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]

хорошо бы код привести.


Наверх

Титульная страница Поиск, карта сайта Написать письмо