0

背景は、私は XNA を使用しており、Awesomium を Image にレンダリングし、そこから 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 に答える