いくつかのレポートを生成するWPFアプリケーションがあります。このアプリケーションをWindowServiceから起動する必要があり、現在LocalSystemとして実行されているサービスから実行しています。Pie 3dを除いて、すべてのレンダリングは適切に行われ、Viewport3Dオブジェクトに表示されます。これは、動作を示すコード抽出です。
static class VisualSaver
{
public static void Save(Visual v, int width, int height, string file,Brush background)
{
RenderTargetBitmap bmp = new RenderTargetBitmap(
width, height, 96, 96, PixelFormats.Pbgra32);
Rectangle vRect = new Rectangle();
vRect.Width = width;
vRect.Height = height;
vRect.Fill = background;
vRect.Arrange(new Rect(0, 0, vRect.Width, vRect.Height));
bmp.Render(vRect);
bmp.Render(v);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(bmp));
using (Stream stm = File.Create(file))
{
png.Save(stm);
}
}
}
そして、これは呼び出しコードです:
VisualSaver.Save(viewport,310,340,PathExtension.GetTempFileWithExtension("png"),Brushes.White);
そして、はい、ビューポートは適切に測定/配置されています。
3Dオブジェクトの非対話型アプリケーションからのレンダリングにいくつかの制限がありますか?私はWindows7-2008サーバー環境にいます。?回避策はありますか?