Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Сохранить страницу TWebBrowser в Bitmap

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   MSHTML_TLB, JPEG, ActiveX, ComObj;

 procedure generateJPEGfromBrowser(browser: iWebBrowser2; jpegFQFilename: string;
   srcHeight: Integer; srcWidth: Integer; tarHeight: Integer; tarWidth: Integer);
 var
   sourceDrawRect: TRect;
   targetDrawRect: TRect;
   sourceBitmap: TBitmap;
   targetBitmap: TBitmap;
   jpeg: TJPEGImage;
   viewObject: IViewObject;
 begin
   sourceBitmap := TBitmap.Create;
   targetBitmap := TBitmap.Create;
   jpeg := TJPEGImage.Create;
   try
     try
       sourceDrawRect := Rect(0, 0, srcWidth, srcHeight);
       sourceBitmap.Width  := srcWidth;
       sourceBitmap.Height := srcHeight;

       viewObject := browser as IViewObject;

       if viewObject = nil then
         Exit;

       OleCheck(viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Form1.Handle,
         sourceBitmap.Canvas.Handle, @sourceDrawRect, nil, nil, 0));

       // Resize the src bitmap to the target bitmap 
      targetDrawRect := Rect(0, 0, tarWidth, tarHeight);
       targetBitmap.Height := tarHeight;
       targetBitmap.Width  := tarWidth;
       targetBitmap.Canvas.StretchDraw(targetDrawRect, sourceBitmap);

       // Create a JPEG from the Bitmap and save it 
      jpeg.Assign(targetBitmap);

       jpeg.SaveToFile(jpegFQFilename);
     finally
       jpeg.Free;
       sourceBitmap.Free;
       targetBitmap.Free;
     end;
   except
     // Error Code 
  end;
 end;

 procedure TForm1.btnButton1Click(Sender: TObject);
 var
   IDoc1: IHTMLDocument2;
   Web: ShDocVW_TLB.IWebBrowser2;
   tmpX, tmpY: Integer;
 begin
   with WebBrowser1 do
   begin
     Document.QueryInterface(IHTMLDocument2, iDoc1);
     Web := ControlInterface;
     tmpX := Height;
     tmpY := Width;
     TControl(WebBrowser1).Visible := Boolean(0);
     Height := OleObject.Document.ParentWindow.Screen.Height;
     Width := OleObject.Document.ParentWindow.Screen.Width;
     generateJPEGfromBrowser(Web,'c:\test.jpg',Height, Width, Height, Width);
     Height := tmpX;
     Width := tmpY;
     TControl(WebBrowser1).Visible := Boolean(1);
   end;
 end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay