![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Предисловие:
Изучал и пробовал работать с потоками на основе прочтения этой статьи http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370 А вот эту http://forum.vingrad.ru/forum/topic-60076.html , осилю чуть позже Сам пост: Есть дерево, при клике на элементах которого в Image рисуется картинка на основе расчетов. Пока она рисуется интерфейс весит. Решил сделать отдельным потоком(см. ниже), вместо рисования создается поток, и он берет данные о площади для рисования и адрес данных, а потом расчитывает и создает канву нужную, после копирует ее в Image. Проблема в том, что он это делает через раз. Т.е. Что то он расчитает и покажет, а что то нафиг пошлет. Думал, может у меня ошибка в расчете самой картинки, взял таймер, и вместо создания потока стал включать таймер, а в его процедуре запускать так же рисование, в итоге все работает стабильно. С потоками, разберусь сам, если есть идеи почему не всегда отрисовывается, будет интересно. Вопрос в основном, а "красиво" ли использовать таймер? Тормоза пропадают, идет почти как отдельный поток, но может где то в чем то хуже?
--------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
Таймер убрал зависание потому что у тебя привью рисуется только когда ты остановишься на конкретной ветке и подождешь срабатывания таймера.
Я бы объединил решение с Timer и поток. Поток имеет смысл если есть вариант что DrawPreview3 будет занимать значительное время. Не рисуется иногда, скорее всего потому, что у тебя запускается много потоков и пока они все по очереди нарисуют картинку кажется что они ничего не делают. также надо
Иначе в случае ошибки навсегда заблокируешь CriticalSection -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
А виной тому третий параметр:
Нельзя в потоке отличном от главного лазить в Canvas. Зато можно работать через Scanline[] -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
А то что это canvas создан в этом же потоке, не дает на это право? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
По моему опыту - не даёт. По крайней мере при использвании TBitmap/TBitmapCanvas. Если кто докажет обратное буду признателен. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Режешь без ножа. Рисовать через таймер удобнее, а потом когда сделал рисование не напрямую в TImage, а сначало создав TBitmap, отрисовав на его канве, а потом присвоив ее уже в TImage, получилось еще быстрее --------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 5 Всего: 63 |
Ну если надо ещё быстрее то надо удалить лишние преобразования. Как минимум присвоение в TImage это кашмашно медленная операция. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| gesper |
|
||||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Сам понял что сказал?) Если ты не понял моих слов - обработка картинки и передача ее через
ускоряет процесс появления нужной картинки на экране. --------------------
...И приколется обломившийся и oбломится приколовшийся... |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |