背景是,我正在使用XNA,我将Awesomium呈现给一个Image,然后我从中创建一个Texture2D。
通过文件将Awesomium呈现给图像的代码如下所示:
webView.Render().SaveToPNG("awesomium.png", true);
var image = Image.FromFile("awesomium.png", true);
哪种方法很好,但它的速度很慢(你可以想象)。
有没有办法使用Awesomium渲染到System.Drawing.Image而无需写入文件系统?
答案 0 :(得分:1)
最后,我在awesomiumdotnet找到了答案。我想官方包装并不总是最完整的:/
public static class Rbex
{
public static Bitmap ToBitmap(this RenderBuffer buffer)
{
const int depth = 4;
const PixelFormat pf = PixelFormat.Format32bppArgb;
// Create bitmap
Bitmap bitmap = new Bitmap(buffer.GetWidth(), buffer.GetHeight(), pf);
BitmapData data = bitmap.LockBits(new Rectangle(0,0, buffer.GetWidth(), buffer.GetHeight()), ImageLockMode.WriteOnly, bitmap.PixelFormat);
buffer.CopyTo(data.Scan0, buffer.GetWidth() * depth, depth, false);
bitmap.UnlockBits(data);
return bitmap;
}
}