private Image CreateImage(GeckoWebBrowser browser)
{
if (_syncControl.InvokeRequired)
{
return (Image)_syncControl.Invoke(new Func<GeckoWebBrowser, Image>(CreateImage), browser);
}
#if __MonoCS__
var offscreenBrowser = browser as OffScreenGeckoWebBrowser;
Debug.Assert(offscreenBrowser != null);
return offscreenBrowser.GetBitmap(browser.Width, browser.Height);
#else
var creator = new ImageCreator(browser);
byte[] imageBytes = creator.CanvasGetPngImage((uint)browser.Width, (uint)browser.Height);
// Ensure image is still valid after the MemoryStream closes.
using (var stream = new MemoryStream(imageBytes))
{
using (var image = new Bitmap(stream))
{
return new Bitmap((image));
}
}
#endif
}