9

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

4

3 回答 3

5

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

这是示例

于 2011-03-18T12:17:20.850 回答
2

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

这是一个选项,但控件必须是可见的:WebBrowser.DrawToBitmap() 还是其他方法?

据我所知,这个问题是当您单击 webbrowsercontrol 时它已修复。因此,执行此程序化应该可以解决问题:)

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

于 2011-03-18T12:16:48.760 回答
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 服务 - 没有可见的内容)。

于 2011-03-18T12:28:36.857 回答