【问题标题】:Rendering picture of a Webpage : berkelium-sharp网页渲染图片:berkelium-sharp
【发布时间】:2012-06-21 06:09:10
【问题描述】:

我正在尝试在应用程序中呈现网页图片。不幸的是,我没有可用的 Windows 窗体,因此 WebKit.net 等解决方案不可用,因为它们需要对窗体进行控制才能提取图像。

因此,我开始研究 Berkelium 的包装器,但只遇到了 berkelium-sharp。它似乎没有使事情变得困难的文档,但是查看代码我看不到从下面呈现的页面创建位图(或类似)的方法。有谁知道可以吗?

我应该补充一点,在有人开始提供不起作用的替代方案之前,我必须使用 .NET 2.0(尽管我对那些这样做的人持开放态度!)。

【问题讨论】:

  • 您在寻找类似 - CopyFromScreen 函数的东西吗?
  • @AngshumanAgarwal:有点,虽然我想要复制的实际项目不应该是可见的,我需要 WebBrowser 控件可以提供的更多功能。我实际上已经联系了 berkelium-sharp 的作者,我认为有一个解决方案,我很快就会发布。

标签: c# winforms berkelium


【解决方案1】:

最初使用它有点古怪,但在给作者发送电子邮件后,我设法在 berkelium-sharp 中提出了以下内容。在这里发帖以防对其他人有用。

    static void Main(string[] args)
    {                        
        BerkeliumSharp.Init(Path.GetTempPath());
        using (Context context = Context.Create())
        {
            BerkeliumSharp.Update();
            using (Window window = new Window(context))
            {
                string url = "http://www.google.com";
                window.Resize(500, 500);
                HandlePaint(window, @"m:\berkelium.png");
                window.NavigateTo(url);

                // Give the page some time to update
                DateTime now = DateTime.Now;
                while(DateTime.Now.Subtract(now).TotalSeconds < 1)
                    BerkeliumSharp.Update();                   
            }
        }
    }

然后,这将使用源代码中包含的 HandlePaint 方法进行自动化测试。我还应该补充一点,在测试中,有一种方便的技术可以等到页面加载完成以消除硬编码的 1 秒延迟。

【讨论】:

  • 您能否详细说明您的最后一段?我在 Berkelium 源代码中搜索 HandlePaint 方法以及阅读测试代码,但找不到。我对一种可以告诉我网站是否已完成加载的可靠方式感兴趣。
  • @marc40000:你在看 Berkelium# 源代码吗? code.google.com/p/berkelium-sharp 。顺便说一句,我最终没有使用它,因为作者告诉我 Berkelium 在其初始化/拆卸过程中不是很稳定,因此导致我的应用程序崩溃。这个测试类有 HandlePaint 方法 - code.google.com/p/berkelium-sharp/source/browse/trunk/…
猜你喜欢
  • 2012-11-08
  • 2011-02-04
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多