2

我找不到正确的方法来获取表单中 tchromium v​​cl 控件中已加载文档的图片。

寻找一种将文档作为文件或流的位图的方法。delphi / tchromium 组件

4

5 回答 5

1

TChromium 继承了 TWinControl,因此它有一个 HANDLE,可以与BitBlt一起使用来获取指定组件的“屏幕截图”。这篇文章几乎涵盖了所有内容。

于 2016-01-11T16:28:27.253 回答
1

很抱歉发布了几乎死问题,但对于未来的开发人员来说,重要的是要知道铬( CEF4 )有一个方法“Chromium.TakeSnapshot(bmp)”,它可以获取加载组件的屏幕截图。

于 2020-07-21T18:20:47.517 回答
0

DCEF3中不再提供保存到图片功能。但是cef-r2.31有它。

procedure Tfmmain.Button1Click(Sender: TObject);
var
  lol:TPicture;
begin
  lol:=TPicture.Create;
  Chromium1.Browser.GetBitmap(PET_VIEW,lol.Bitmap);
  lol.SaveToFile('c:\lol.bmp');
  lol.Free;
  lol:=nil;
end;
于 2016-01-11T16:40:35.960 回答
0

我认为从整个应用程序屏幕拍摄快照会更容易。尝试这个 :

function screenshot: boolean;
var
  Bild : TBitmap;
  jpg : tjpegimage;
  c: TCanvas;
   r: TRect;
begin
try
   c := TCanvas.Create;
   bild := tbitmap.Create;
   c.Handle := GetWindowDC(GetDesktopWindow);
   try
    r := Rect(0, 0, Screen.Width, Screen.Height);
     Bild.Width := Screen.Width;
     Bild.Height := Screen.Height;
     Bild.Canvas.CopyRect(r, c, r);
     JPG := TJpegImage.Create;
     jpg.smoothing := true;
     jpg.CompressionQuality := 60 ;
     jpg.Assign(bild);
     jpg.compress;
     jpg.SaveToFile(dircamp+'\screen.jpg');
   finally
    ReleaseDC(0, c.Handle);
     Bild.free;
     jpg.free;
     c.Free;
   end;
except
end;
于 2016-05-17T01:03:39.873 回答
0

离屏渲染器组件具有 OnPaint 方法,用于将数据复制到屏幕,您可以使用它来保存图像

于 2017-02-08T09:36:21.480 回答