Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка изображений в TImage из интернета

54K
01 февраля 2010 года
gaspar_la
7 / / 29.01.2010
Подскажите, плз, можно ли, и если можно, то как загрузить картинку из интернета в компонент TImage?
8.2K
01 февраля 2010 года
bagie2
299 / / 26.10.2008
Я думаю не будет хуже, если пример будет на Delphi. Для общего понятия я думаю сойдет. Можете сделать потомок от TImage, который будет уметь загружать картинки из интернета и в формате PNG,GIF,JPEG ибо OleLoadPicture это позволяет.

Код:
uses
  ActiveX, ComObj, UrlMon;

const
  IID_IPicture: TGUID = '{7bf80980-bf32-101a-8bbb-00aa00300cab}';

var
  Pict: IPicture;

procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: IStream;
  Bitmap: HBITMAP;
begin
  OleCheck(URLOpenBlockingStreamW(nil, 'http://i.codenet.ru/www/images/logo.gif', Stream, 0, nil));    
  OleCheck(OleLoadPicture(Stream, 0, True, IID_IPicture, Pict));
  OleCheck(Pict.get_Handle(OLE_HANDLE(Bitmap)));
  Image1.Picture.Bitmap.Handle := Bitmap;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CoInitializeEx(nil, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY);
end;


ps: кстати в D5 этот код вызывает экскепшн, а в D7 все работает. почему косяк - читайте ниже.
54K
01 февраля 2010 года
gaspar_la
7 / / 29.01.2010
спасиб огромное )
8.2K
01 февраля 2010 года
bagie2
299 / / 26.10.2008
а ошибка в D5 вызвана неправильным определением URLOpenBlockingStreamW:
Цитата:
function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; p3: IStream; p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;



а надо (взято из D7)

Цитата:
function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; out p3: IStream; p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;



И еще. Не надо забывать вызывать CoInitializeEx (хотя CoInitialize и вызывается при инициализации модуля ComObj)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог