我不能找到一种正确的方式来获取在窗体中tchromium vcl控件中加载的文档的图片。howto通过编程获取tchromium加载文档的截图?
正在寻找一种将文档作为文件或流的位图获取的方法。 德尔福/ tchromium组件
我不能找到一种正确的方式来获取在窗体中tchromium vcl控件中加载的文档的图片。howto通过编程获取tchromium加载文档的截图?
正在寻找一种将文档作为文件或流的位图获取的方法。 德尔福/ tchromium组件
保存到图片功能不再在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;
TChromium继承了TWinControl,因此它有一个HANDLE,它可以与BitBlt一起使用,以获取指定组件的“截图”。 This article几乎涵盖了所有。
我认为从整个应用程序屏幕拍摄快照会更容易。试试这个:
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;
戏外渲染器组件具有的OnPaint用来将数据复制到屏幕的方法,你可以用它来保存图像
周围有这个节目很多代码样本如何采取截图 –
以编程方式在德尔福? 只需在所有铬vcl来源或其演示中没有部分不区分大小写的关键字,即“图片”,“捕获”或“位图”。 –
我认为答案是不可能的。 “在CEF3中尚不可能,CEF3中已删除必要的API函数” –