有没有办法使用AwesomiumSharp在内存中创建System.Drawing.Image?

时间:2011-07-05 04:08:30

标签: c# .net xna awesomium

背景是,我正在使用XNA,我将Awesomium呈现给一个Image,然后我从中创建一个Texture2D。

通过文件将Awesomium呈现给图像的代码如下所示:

webView.Render().SaveToPNG("awesomium.png", true);
var image = Image.FromFile("awesomium.png", true);

哪种方法很好,但它的速度很慢(你可以想象)。

有没有办法使用Awesomium渲染到System.Drawing.Image而无需写入文件系统?

1 个答案:

答案 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;
    }
}