【问题标题】:Delphi,VCL... rendering web components on formDelphi,VCL... 在表单上渲染 Web 组件
【发布时间】:2011-01-20 23:27:13
【问题描述】:

如何使用 delphi 将网站的一部分渲染为位图?

最近我看到了 Raudus 框架,它是 Delphi 的 ExtJs 绑定/包装器。然而,它的独特之处在于它确实将组件渲染为与浏览器中的外观完全相同。简单地说,它就像在 delphi IDE 中为 Javascript 组件设计的 WYSIWYG 设计器。我无法尝试,因为我使用的是 delphi 个人版(它需要 dbrtl)。 但是看演示电影需要一些时间来渲染组件(即使在调整它们大小之后),因此我相信它是通过网络浏览器渲染引擎或类似的东西渲染的......

如果有人知道类似但开源的东西,请告诉我... 提前致谢, 米

【问题讨论】:

标签: delphi extjs browser


【解决方案1】:

如果您对 Internet Explorer 呈现页面的方式感到满意,它将在 TWebBrowser(内置组件)中正确显示,并且您可以从那里生成位图。

http://delphi.about.com/od/vclusing/a/wb_scren_shot.htm

http://www.delphi3000.com/articles/article_4132.asp?SK=

【讨论】:

  • 有一个与 Firefox 等效的 TWebBrowser,称为 Mozilla Firefox ActiveX。
  • @HalloDu:AFAICT,ActiveX 仅在 FireFox 的早期(v1.5 和可能 2.x)中有效。这使得它太依赖于 IMO 版本;您必须要求用户安装它适用的特定版本之一。 IE,OTOH,您可以指望在每个系统上以某种形式安装。
  • 是的,但是根据哪个版本,他可能在设计时在 Delphi Personal 中无法使用它。
  • 它的 D7 PE,我知道 Mozilla 和 IE ActiveX。这里最好使用 IE,因为它不需要安装 Firefox。感谢您提供这些链接,我会尝试它们...
【解决方案2】:

Dave Baldwin's HTML display components 现在是带有源代码的免费软件(甚至是专业版),并且可以在 Delphi 中工作到 2006 年(也就是 2007 年)。我不知道这些是否有帮助,因为您没有指定您使用的是哪个版本的 Delphi。

【讨论】:

  • Delphi 版本在这里并不重要。它们也可以在 D7 下工作,我知道这些组件。然而它在这里没有帮助,因为它必须在启用 JavaScript 的情况下显示。
  • 我确实提到了“到 2006 年”,其中​​包括 D7。此外,如果您使用不受支持的 Delphi 2009 或 2010,则版本很重要,在这种情况下,建议将毫无价值。 :-) 这就是为什么我首先提到它 - 特别是自 2009 年发布(仅限 Unicode)以来,该版本可以有所作为,就像使用泛型的答案或新改进的 D2010 RTTI 对某人无用一样使用 D7。
【解决方案3】:

不久前,我发现了一个神秘的 ActiveX 调用:OleDraw。事实证明,使用嵌入式 WebBrowser 组件 (IWebBrowser2) 渲染 HTML 并将输出抓取到位图中非常有效。

代码可能有点像这样:

uses ActiveX, OleCtrls, SHDocVw;
b:=TBitmap.Create;
try
  b.Width:=SizeX;
  b.Height:=SizeY;
  OleDraw(WebBrowser1.OleObject,DVASPECT_CONTENT,b.Canvas.Handle,Rect(0,0,SizeX,SizeY));
  b.SaveToFile(FileName);
finally
  b.Free;
end;

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多