我正在尝试在BackgroundWorker中呈现Awesomium无头浏览器。
然而,当我尝试使用CopyTo复制缓冲区时, 我得到一个AccessViolationException说我正在尝试访问受保护的内存。 这是我第一次使用System.Drawing命名空间。
这是我的代码:
RenderBuffer b = browser.Render();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(size.Width, size.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
System.Drawing.Imaging.BitmapData bmd = bmp.LockBits(new System.Drawing.Rectangle(0, 0,size.Width, size.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
b.CopyTo(bmd.Scan0, bmd.Stride, 4, false, false);
bmp.UnlockBits(bmd);
System.IO.MemoryStream dat = new System.IO.MemoryStream(bmp.Width * bmp.Height * 4);
bmp.Save(dat, System.Drawing.Imaging.ImageFormat.Png);
page = Texture2D.FromStream(Game.GraphicsDevice, dat);
bmp.Dispose();
提前致谢!