-
Похожий контент
-
- 0 ответов
- 770 просмотров
-
- 3 ответа
- 880 просмотров
-
- 2 ответа
- 1 296 просмотров
-
- 1 ответ
- 1 493 просмотра
-
- 0 ответов
- 1 201 просмотр
-
- 0 ответов
- 1 429 просмотров
-
- 4 ответа
- 3 228 просмотров
-
- 6 ответов
- 1 972 просмотра
-
- 6 ответов
- 1 868 просмотров
-
- 2 ответа
- 2 340 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Евгений Корепов
Для одного своего проекта сделал, поделюсь, вдруг кому пригодится. Тестировал под Windows и Android.
Для использования просто добавьте BitmapAsyncLoader в uses, а дальше все просто:
ImageControl.Bitmap.LoadFromURLAsync('https://bipbap.ru/wp-content/uploads/2017/10/0_8eb56_842bba74_XL-640x400.jpg');
Код юнита хелпера:
unit BitmapAsyncLoader; interface uses FMX.Graphics, System.Net.HttpClient, System.Types, System.Classes; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromUrlAsync(const AUrl : String); end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then TThread.Synchronize(Nil, procedure begin try Self.LoadFromStream(AHTTPResponse.ContentStream); except end; end ); end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then begin AHTTPClient.DisposeOf; end; end.
Архив с тестовым проектом прилагаю.
BitmapAsyncLoader.7z
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.