pontban bemutatott technikát használom
Megpróbáltam lekérni egy weboldal képernyőjét, és sikerült elérni, hogy a következő kód sikeresen működjön, amikor a WebBrowser
vezérlőt egy WinForm
-ra helyezzük. Ez azonban meghiúsul, mivel tetszőleges képet ad az asztalról, amikor egy szálon belül fut.
Thread browserThread = new Thread(() =>
{
WebBrowser br = new WebBrowser();
br.DocumentCompleted += webBrowser1_DocumentCompleted;
br.ProgressChanged += webBrowser1_ProgressChanged;
br.ScriptErrorsSuppressed = true;
br.Navigate(url);
Application.Run();
});
browserThread.SetApartmentState(ApartmentState.STA);
browserThread.Start();
private Image TakeSnapShot(WebBrowser browser)
{
int width;
int height;
width = browser.ClientRectangle.Width;
height = browser.ClientRectangle.Height;
Bitmap image = new Bitmap(width, height);
using (Graphics graphics = Graphics.FromImage(image))
{
Point p = new Point(0, 0);
Point upperLeftSource = browser.PointToScreen(p);
Point upperLeftDestination = new Point(0, 0);
Size blockRegionSize = browser.ClientRectangle.Size;
blockRegionSize.Width = blockRegionSize.Width - 15;
blockRegionSize.Height = blockRegionSize.Height - 15;
graphics.CopyFromScreen(upperLeftSource, upperLeftDestination, blockRegionSize);
}
return image;
}
Ez nyilvánvalóan a Graphics.CopyFromScreen()
módszer miatt történik, de nem tudok más megközelítésről. Van valami módszer a probléma megoldására, amit valaki javasolhat? vagy az egyetlen lehetőségem, hogy létrehozok egy űrlapot, hozzáadom a vezérlőt, láthatóvá teszem, majd kihúzom a képernyőt? Nyilvánvaló okokból remélem, hogy elkerülöm ezt a megközelítést.
using
utasítások nélkül. sóhajt. 18.02.2016