Есть ли способ использовать AwesomiumSharp для создания System.Drawing.Image в памяти? - PullRequest
0 голосов
/ 05 июля 2011

Фон, я использую XNA, и я рендерил Awesomium в изображение, из которого я затем делаю Texture2D.

Код для рендеринга Awesomium в изображение через файл выглядит примерно так:

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

Что отлично работает, но это медленная собака (как вы можете себе представить).

Есть ли способ использовать Awesomium для рендеринга в System.Drawing.Image без записи в файловую систему?

1 Ответ

1 голос
/ 05 июля 2011

В конце концов я нашел свой ответ в 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;
    }
}
...