0

背景是,我正在使用 XNA,我将 Awesomium 渲染到一个图像,然后我从中制作一个 Texture2D。

通过文件将 Awesomium 渲染到图像的代码如下所示:

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

效果很好,但是速度很慢(您可以想象)。

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

4

1 回答 1

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;
    }
}
于 2011-07-05T07:21:43.570 回答