| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > XE7 и загрузка картинки в потоке |
| Автор: Adm123 27.2.2015, 15:50 | ||
| Доброго всем дня! Помогите решить проблему..! Есть файл картинки в и-нете (jpg). Есть TImage. Как отобразить картинку в TImage-е в потоке? Ни в какую чего-то не выходит...
Не работает сия конструкция... Если в БаттонКлик написать код потока - работает. А так - не хочет. Подскажите, как быть..? Заранее извиняюсь за возможные опечатки - код писал, а не копировал. В программе синтаксических ошибок нет. |
| Автор: Illusion Dolphin 27.2.2015, 16:06 | ||||
Битмап и jpep это разные форматы. Надо сделать TJpegImage считать его из потока и потом его преобразовывать в TBitmap. P.S. Image1.Bitmap.Assign(timg); - Что-то мне подсказывает, что это потоко-небезопасно. |
| Автор: Adm123 27.2.2015, 16:15 |
| Насчет потокобезопасности буду разбираться, я пока не силен в этом... А вот timg: TGpegImage никак написать не получается. Не хочет он в uses воспринимать vcl.imaging.jpeg почему-то... да и в основном-то потоке работает, проверено... |
| Автор: Illusion Dolphin 27.2.2015, 17:14 | ||
Может буква не та? |
| Автор: Alexeis 28.2.2015, 15:11 |
| Создать TJpegImage в потоке и загрузить в него картинку вполне возможно. Вопрос потокобезопасности возникает при одновременном доступе из 2х потоков. А вот назначать загруженную картинку объекту TImage лучше в главном потоке, поскольку TImage связан с окном на котором он лежит, а окно создано в главном потоке. Но назначение картинки операция быстрая. Обычно в этом случае присваивается внутренний контент с увеличением счетчика ссылок. После этого можно уничтожить TJpegImage. Эта операция не уничтожить изображение в TImage, просто уменьшится внутренний счетчик ссылок. |