Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поместить картинку из TWebBrowser в TImage


Danco ©   (2009-12-08 16:24:00) 

Отгуглил весь интернет, ничего хорошего не нашел.

Загружаю страницу в TWebBrowser, на ней есть фотография, ее нужно пометить в TImage без повторной загрузки изображения из интернета.

Кто-нибудь знает как это реализовать?


Danco   (2009-12-08 19:24:00) [1]

Пришла в голову идея:
Если делать скрин TWebBrowser и помещать TImage, после вырезать нужный элемент.

procedure TForm1.Button1Click(Sender: TObject);
var
 ViewObject: IViewObject;
 sourceDrawRect: TRect;
begin
Image1.Picture := nil;
if WebBrowser.Document <> nil then
 try
  WebBrowser.Document.QueryInterface(IViewObject, ViewObject);
  if ViewObject <> nil then
   try
    sourceDrawRect := Rect(0, 0, WebBrowser.Width, WebBrowser.Height);
    ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Self.Handle,
    image1.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
   finally
    ViewObject._Release;
   end;
 except
 end;
end;


Этот код работает, но он копирует не всю страницу, а только видимую часть, как можно скопировать всю страницу?


sniknik   (2009-12-08 19:14:00) [2]

> Помоему я этот вопрос задал :))
тогда отвечаю - до того как озадачиваться что то вытаскивать, сначала реализуй поддержку ico, gif, png, и других форматов в которых может быть рисунок в браузере, т.к. стандартно есть только bmp и jpeg.
к тому времени может охота перетаскивать и пропадет...

> дык она и так уже в веббраузере отображается
дык его он наверняка хочет спрятать, как только свое доделает. ;)


clickmaker   (2009-12-08 18:34:00) [3]

> Помоему я этот вопрос задал :))

дык она и так уже в веббраузере отображается


Danco   (2009-12-08 18:24:00) [4]


> это понятно, а отображать как собрался?

Помоему я этот вопрос задал :))


sniknik   (2009-12-08 17:35:00) [5]

> Нет, просто не хочу лишний раз загружать трафик.
это понятно, а отображать как собрался?


Danco   (2009-12-08 17:28:00) [6]


> а еще кстати, к автору, а у тебя фотографии в bmp? поэтому
> ты так напрягаешься лишь бы не качать повторно. :) или у
> тебя "супер"TImage?

Нет, просто не хочу лишний раз загружать трафик.


> разве что поискать в кэше по Src


А просто вынуть из TWebBrowser можно?


sniknik   (2009-12-08 17:02:00) [7]

> А какой-нибудь инди
а, ну да. ну тогда можно попробовать "поковырять" сам TWebBrowser, на предмет сохраняющего интерфейса и вместо странички дать ему ссылку на картинку из src.

а еще кстати, к автору, а у тебя фотографии в bmp? поэтому ты так напрягаешься лишь бы не качать повторно. :) или у тебя "супер"TImage?


clickmaker   (2009-12-08 16:54:00) [8]

> повторное обращение не возьмет картинку из кеша?

смотря чем обращаться.
InternetOpenUrl, может, и возьмет.
А какой-нибудь инди, который через сокеты работает, о кэшах не знает ничего


Сергей М.   (2009-12-08 16:49:00) [9]

А нашиша тогда TWebBrowser ?


sniknik   (2009-12-08 16:48:00) [10]

а если есть кеш, то разве повторное обращение не возьмет картинку из кеша? или это динамический контент?


clickmaker   (2009-12-08 16:36:00) [11]

по имени файла в src, вернее


clickmaker   (2009-12-08 16:35:00) [12]

разве что поискать в кэше по Src


Наверх

Титульная страница Поиск, карта сайта Написать письмо