WebBrowser.DrawtoBitmap() генерирует пустые изображения для нескольких сайтов последовательно
Я использовал WebBrowser.DrawtoBitmap() на моей странице asp.net, работающей в отдельном потоке STA, для захвата веб-страниц в виде изображения. Но я обнаружил, что постоянно получаю пустые изображения для нескольких сайтов. Я знаю, что этот метод не "официально" поддерживается, но было бы неплохо, если бы кто-то мог предоставить мне причину или обойти эту проблему с пустыми изображениями.
3 ответа
DrawToBitmap
имеет ограничения и не всегда работает, как ожидалось. Попробуй вместо этого работать с родным GDI+
Вот пример
Вы не попадаете на страницы с помощью 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 - ничего не видно).
Эту проблему можно решить, сосредоточив внимание на элементе управления, чтобы он рисовал правильно.
Это будет вариант, но элемент управления должен быть видимым: WebBrowser.DrawToBitmap () или другие методы?
Насколько я слышал, проблема в том, что она устранена, когда вы нажимаете webbrowsercontrol. Поэтому выполнение этой программы должно решить проблему:)
Я не проверял это, но в теории я думаю, что можно запустить форму окна в приложении asp.net. Ссылка на system.windows.forms и на чертеж, затем используйте application.run в отдельном потоке. Примечание: я разговариваю по телефону, поэтому не могу проверить его, но он может действительно работать.