62,046
社区成员
发帖
与我相关
我的任务
分享
WebBrowser w1;
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(p =>
{
w1 = new WebBrowser();
w1.ObjectForScripting = this;
w1.Navigate(System.Environment.CurrentDirectory + @"\test.html");
w1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetBitmap);
});
t.TrySetApartmentState(ApartmentState.STA);
t.Start();
}
private void GetBitmap(object sender,WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement element = w1.Document.Body;
int w = element.ScrollRectangle.Width + element.OffsetRectangle.Width;
int h = element.ScrollRectangle.Height + element.OffsetRectangle.Height;
w1.Width = w;
w1.Height = h;
using (Bitmap bmp = new Bitmap(w, h))
{
w1.DrawToBitmap(bmp, element.ClientRectangle);
string fileName = "d:\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bmp";
bmp.Save(fileName);
}
}
WebBrowser w1;
AutoResetEvent autoResetEvent = new AutoResetEvent(false);
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(p =>
{
w1 = new WebBrowser();
w1.ObjectForScripting = this;
w1.Navigate(System.Environment.CurrentDirectory + @"\test.html");
w1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetBitmap);
while (w1 .ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
});
t.TrySetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}
private void GetBitmap(object sender,WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement element = w1.Document.Body;
int w = element.ScrollRectangle.Width + element.OffsetRectangle.Width;
int h = element.ScrollRectangle.Height + element.OffsetRectangle.Height;
w1.Width = w;
w1.Height = h;
using (Bitmap bmp = new Bitmap(w, h))
{
w1.DrawToBitmap(bmp, element.ClientRectangle);
string fileName = "d:\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bmp";
bmp.Save(fileName);
}
//即通知正在等待的线程有事件发生
autoResetEvent.Set();
}
WebBrowser w1;
AutoResetEvent autoResetEvent = new AutoResetEvent(false);
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(p =>
{
w1 = new WebBrowser();
w1.ObjectForScripting = this;
w1.Navigate(System.Environment.CurrentDirectory + @"\test.html");
w1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(GetBitmap);
autoResetEvent .WaitOne();
});
t.TrySetApartmentState(ApartmentState.STA);
t.Start();
}
private void GetBitmap(object sender,WebBrowserDocumentCompletedEventArgs e)
{
HtmlElement element = w1.Document.Body;
int w = element.ScrollRectangle.Width + element.OffsetRectangle.Width;
int h = element.ScrollRectangle.Height + element.OffsetRectangle.Height;
w1.Width = w;
w1.Height = h;
using (Bitmap bmp = new Bitmap(w, h))
{
w1.DrawToBitmap(bmp, element.ClientRectangle);
string fileName = "d:\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".bmp";
bmp.Save(fileName);
}
//即通知正在等待的线程有事件发生
autoResetEvent.Set();
}
这样改试试。