为什么在代码背后渲染图像不起作用?

问题描述

我正在尝试从螺旋控件生成屏幕截图,但仅在后面的代码中-为什么这不起作用? 缺少什么了吗?

private void generate() {

    ModelImporter importer = new ModelImporter();
    Model3D model = importer.Load(@"c:\test\test.obj");

    Model3DGroup group = new Model3DGroup();
    group.Children.Add(model);

    ModelVisual3D myModelVisual3D = new ModelVisual3D();
    myModelVisual3D.Content = group;

    HelixViewport3D viewer = new HelixViewport3D();
    viewer.Children.Add(myModelVisual3D);

    Dispatcher.BeginInvoke(new Action(() =>
            {
                RenderTargetBitmap bmp = new RenderTargetBitmap(1024,768,96,PixelFormats.Pbgra32);
                bmp.Render(viewer);

                PngBitmapEncoder png = new PngBitmapEncoder();
                BitmapFrame frame = BitmapFrame.Create(bmp);
                png.Frames.Add(frame);
                using (Stream stm = File.Create(@"c:\test\test.png"))
                {
                    png.Save(stm);
                }            }
            ),DispatcherPriority.ContextIdle,null);
}

编辑:

无例外-无-代码缝正常工作,但PNG为空。如果我将HelixViewport3D viewer与XAML中的控件交换,则可以生成PNG。使用在代码中定义的HelixViewport3D时,渲染不起作用并且PNG为空-大小可以-它是PNG但没有内容-当我显示它时是透明的。 在这个test.obj文件中没有什么特别的-当我使用XAML定义的HelixViewport3D时-一切都很好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)