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