|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.03.2011, 22:33 | #1 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
обработка изображения в потоке
я делаю обработку изображения в отдельном потоке, после этого вывожу изображение на форму в Timage
в поток передаю ссылку на экземпляр Tbitmap: Код:
свойства в потоке: Код:
Код:
то работает без ошибок, а без синхронизации изображение получается все черное или поток завершается раньше в ремени.. хотя общих данных одновременно в потоке не использую, в чем может быть косяк?
Если помог нажми на весы
|
04.03.2011, 01:37 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
работа с VCL в потоке должна быть совершена только через Synchronize
соответственно именно туда надо вынести рисование битмапа. да кстати ^Tbitmap, не надо этого в данном случае, в Делфи объекты хранятся только по указателю, в итоге у вас выходит указатель на указатель. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.03.2011, 02:02 | #3 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
битмап у меня отдельная переменная, не связана с image1, рисую я на форме без потока, но если я не передаю указалеть в поток а создаю в нем новый битмап и копирую в него битмап другой, то ошибки нет.
в место: Код:
Код:
я еще передаю ссылку на динамический массив, он тоже не явный указатель?, но без "^" не работает
Если помог нажми на весы
Последний раз редактировалось Dеlphi; 04.03.2011 в 02:07. |
04.03.2011, 03:42 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
я имел в виду сделать так:
Код:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
04.03.2011, 13:46 | #5 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
а как синхронизировать только OnTerminate ?
я сделал обработку изображения в несколько потоков, один поток свою часть изображения обрабатывает, но без синхронизации на форму не что не выводится всё белое
Если помог нажми на весы
Последний раз редактировалось Dеlphi; 04.03.2011 в 13:48. |
04.03.2011, 13:47 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
может стоит без OnTerminate сделать?
в конце execute написать вызов синхрониз-метода который и нарисует. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.03.2011, 14:07 | #7 | |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
Цитата:
Код:
работает только так: Код:
Если помог нажми на весы
Последний раз редактировалось Dеlphi; 04.03.2011 в 14:27. |
|
04.03.2011, 18:30 | #8 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
выяснил что без синхронизации битмам.Canvas.Pixels[10,10] и любые координаты пикселя равно -1, даже если перед этим пикселю присваивать какое ни будь знечение
с синхронизацией: Код:
без синхронизации: Код:
может это из за delphi?
Если помог нажми на весы
Последний раз редактировалось Dеlphi; 04.03.2011 в 18:33. |
04.03.2011, 22:01 | #9 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
Проблему решил
Если помог нажми на весы
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Попиксельная обработка изображения | shushlev | Мультимедиа в Delphi | 17 | 15.05.2013 20:27 |
Отрисовка изображения в потоке | STRELOK-2007 | Общие вопросы Delphi | 0 | 23.01.2011 22:47 |
Обработка изображения (инверсный фильтр) | Dreablin | C++ Builder | 5 | 06.12.2009 22:28 |
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" | ruelCrow | Общие вопросы .NET | 3 | 10.07.2008 23:29 |
Обработка изображения | Hollander | Мультимедиа в Delphi | 6 | 10.03.2008 14:21 |