如何以编程方式获取铬加载文档的屏幕截图?
howto get Screenshot of tchromium loaded document programmatically?
我找不到合适的方法来获取表单中 tchromium vcl 控件中加载文档的图片。
正在寻找一种将文档作为文件或流的位图获取的方法。
delphi / tchromium 组件
TChromium 继承了 TWinControl,因此它有一个可以与 BitBlt to take a "Screenshot" of the specified component. This article 一起使用的 HANDLE,几乎涵盖了所有内容。
保存到图片功能在DCEF3.butcef-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;
我认为从整个应用程序屏幕拍摄快照会更容易。试试这个:
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 方法,用于将数据复制到屏幕,您可以使用它来保存图像
抱歉 post 几乎没有问题,但对于未来的开发者来说,重要的是要知道 chromium ( CEF4 ) 有一个方法“Chromium.TakeSnapshot(bmp)”,可以获取加载组件的屏幕截图。
我找不到合适的方法来获取表单中 tchromium vcl 控件中加载文档的图片。
正在寻找一种将文档作为文件或流的位图获取的方法。 delphi / tchromium 组件
TChromium 继承了 TWinControl,因此它有一个可以与 BitBlt to take a "Screenshot" of the specified component. This article 一起使用的 HANDLE,几乎涵盖了所有内容。
保存到图片功能在DCEF3.butcef-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;
我认为从整个应用程序屏幕拍摄快照会更容易。试试这个:
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 方法,用于将数据复制到屏幕,您可以使用它来保存图像
抱歉 post 几乎没有问题,但对于未来的开发者来说,重要的是要知道 chromium ( CEF4 ) 有一个方法“Chromium.TakeSnapshot(bmp)”,可以获取加载组件的屏幕截图。