2016-01-11 21 views
2

我不能找到一种正确的方式来获取在窗体中tchromium v​​cl控件中加载的文档的图片。howto通过编程获取tchromium加载文档的截图?

正在寻找一种将文档作为文件或流的位图获取的方法。 德尔福/ tchromium组件

+0

周围有这个节目很多代码样本如何采取截图 –

+0

以编程方式在德尔福? 只需在所有铬vcl来源或其演示中没有部分不区分大小写的关键字,即“图片”,“捕获”或“位图”。 –

+0

我认为答案是不可能的。 “在CEF3中尚不可能,CEF3中已删除必要的API函数” –

回答

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; 
1

TChromium继承了TWinControl,因此它有一个HANDLE,它可以与BitBlt一起使用,以获取指定组件的“截图”。 This article几乎涵盖了所有。

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; 
0

戏外渲染器组件具有的OnPaint用来将数据复制到屏幕的方法,你可以用它来保存图像