Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法使用AwesomiumSharp在内存中创建System.Drawing.Image?_C#_.net_Xna_Awesomium - Fatal编程技术网

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

C# 有没有办法使用AwesomiumSharp在内存中创建System.Drawing.Image?,c#,.net,xna,awesomium,C#,.net,Xna,Awesomium,背景是,我正在使用XNA,我将一个物体渲染成一个图像,然后用它制作一个纹理2D 通过文件向图像呈现Awesomium的代码如下所示: webView.Render().SaveToPNG("awesomium.png", true); var image = Image.FromFile("awesomium.png", true); 这很好,但速度很慢(你可以想象得到) 有没有一种方法可以使用Awesomium渲染到System.Drawing.Image而不写入文件系统?最后我在中找到了答

背景是,我正在使用XNA,我将一个物体渲染成一个图像,然后用它制作一个纹理2D

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

webView.Render().SaveToPNG("awesomium.png", true);
var image = Image.FromFile("awesomium.png", true);
这很好,但速度很慢(你可以想象得到)


有没有一种方法可以使用Awesomium渲染到System.Drawing.Image而不写入文件系统?

最后我在中找到了答案。我猜官方包装并不总是最完整的:/

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

webView.Render()
返回什么?@DarkSlipstream,它返回RenderBuffer。该类的文档如下所示: