WebBrowser.DrawtoBitmap()一致地为少数站点生成空白图像

时间:2011-03-18 12:14:55

标签: c# asp.net screenshot drawtobitmap

我一直在我的asp.net页面中使用WebBrowser.DrawtoBitmap()在单独的STA线程中运行,以将网页捕获为图像。但我发现我一直在为少数网站拍摄空白图像。我知道这种方法不是“正式”支持的,但如果有人可以为我提供任何理由或解决这些空白图像问题,那就太好了。

3 个答案:

答案 0 :(得分:5)

DrawToBitmap有局限性,并不总是按预期工作。尝试使用原生GDI +

这是example

答案 1 :(得分:2)

这个问题可以通过将焦点放在控件上来解决,因此它可以正确绘制。

这是一个选项,但必须显示控件:WebBrowser.DrawToBitmap() or other methods?

据我所知,问题是当你点击webbrowsercontrol时它已修复。因此,执行此程序化应解决问题:)

我没有对此进行过测试,但从理论上讲,我认为可以在asp.net应用程序中启动Windows窗体。 引用system.windows.forms和绘图,然后在单独的线程上使用application.run。 注意:我在手机上,所以我无法测试,但实际上可能会有效。

答案 2 :(得分:2)

你没有使用Flash点击页面?

我必须这样做才能让WebBrowser控件生效:

using System;
using System.Windows.Forms;

public class WebBrowserEx : WebBrowser
{
   public WebBrowserEx()
   {
   }

   protected override void WndProc(ref Message m)
   {
      switch (m.Msg)
      {
         case 0x021:
         case 0x201:
         case 0x204:
         case 0x207:
             base.DefWndProc(ref m);
             return;
      }
      base.WndProc(ref m);
   }
}

我真的不知道我在做什么,我只是在某个地方找到了它,它是为了启用Flash。但是我认为自那以后我没有太多问题。

我用它做截图。我在一个单独的STA线程上运行它(作为一个Windows服务 - 没什么可见的。)