Visual C# 2010 を使用して、Windows Kinect から受信したフレームから .avi ファイルを書き込もうとしています。フレームは、BitmapEncoder と PngBitmapEncoder (ストリームに保存) を使用して .png ファイルとして簡単に保存できますが、これらの画像をここで提供される VideoStream に自分の裁量で追加することはできません: http://www.codeproject. RenderTargetBitmap または DrawingVisual を System.Drawing.Bitmap に変換できるようにする必要があるためです。
同様のことを行うサンプルコードを見つけましたが、それらはすべて、Visual Studio が抽象的でインスタンス化できないと言った Image クラスをインスタンス化したいようです。
私はぐるぐる回っていて、どこにも行きません。
私はちょうどこのようなことをしたい:
...
renderBitmap.Render(dv);
Bitmap bmp=new Bitmap(dv);
VideoStream aviStream=aviManager.AddVideoStream(true,60,bmp);
...
しかし、Bitmap には、dv (DrawingVisual) から bmp に移行するための便利なコンストラクターがありません。:(
これらの 3 行は、次のスニペットから取得されます。
var renderBitmap=new RenderTargetBitmap(colorWidth,colorHeight,96.0,96.0,PixelFormats.Pbgra32);
DrawingVisual dv=new DrawingVisual();
using(DrawingContext dc=dv.RenderOpen())
{
VisualBrush backdropBrush=new VisualBrush(Backdrop);
dc.DrawRectangle(backdropBrush,null,new Rect(0,0,colorWidth,colorHeight));
VisualBrush colorBrush=new VisualBrush(MaskedColor);
dc.DrawRectangle(colorBrush,null,new Rect(0,0,colorWidth,colorHeight));
VisualBrush watermarkBrush=new VisualBrush(Watermark);
dc.DrawRectangle(watermarkBrush,null,new Rect(colorWidth-96,colorHeight-80,64,48));
}
renderBitmap.Render(dv);
Bitmap bmp=new Bitmap(dv);
VideoStream aviStream=aviManager.AddVideoStream(true,60,bmp);