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