【问题标题】:howto get Screenshot of tchromium loaded document programmatically?如何以编程方式获取铬加载文档的屏幕截图?
【发布时间】:2016-01-11 14:31:16
【问题描述】:

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

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

【问题讨论】:

  • 周围有很多代码示例展示了如何截取屏幕截图
  • 以编程方式在 delphi 上?只是在所有 chromium v​​cl 源或其演示中没有部分不区分大小写的关键字,即“图片”、“捕获”或“位图”。
  • 我认为答案是不可能的。 "在 CEF3 中还不可能,在 CEF3 中删除了必要的 API 函数"
  • 还有 cef3 不能。但答案是 dcef-r231。当我按下第一个“打印屏幕”时是 1988 年。 printscreen 只需要屏幕。但我正在寻找“将文档区域作为位图”。加载的文档通常会在屏幕上过大。

标签: delphi bitmap screenshot document tchromium


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是正确的选择
    【解决方案3】:

    保存到图片功能在 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;
    

    【讨论】:

      【解决方案4】:

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

      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;
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 2017-11-15
          • 1970-01-01
          • 1970-01-01
          • 2016-03-18
          • 2011-01-13
          相关资源
          最近更新 更多