c# - 将图像从 model3dgroup 的 3D 模型渲染到位图失败

标签 c# wpf bitmap helix-3d-toolkit

我正在使用 C# WPF,我正在尝试从 3D 模型渲染 2D View ,我可以将其用作我的 ui 项目的预览图像。

为了实现这一点,我正在尝试正确使用此类:

RenderTargetBitmap 类( https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap(v=vs.110).aspx )

这就是我尝试使用它的方式:

更新后不相关

public void SetModelImage()
    {
        RenderTargetBitmap bmp = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Pbgra32);
        PngBitmapEncoder png = new PngBitmapEncoder();
        Viewport3D myViewport3d = new Viewport3D();
        ModelVisual3D myModelVisual3D = new ModelVisual3D();
        Model3DGroup myModel3DGroup = new Model3DGroup();
        GeometryModel3D myGeometryModel = new GeometryModel3D();
        this.previewModel = new PngBitmapEncoder();
        PerspectiveCamera myPCamera = new PerspectiveCamera();

        myModel3DGroup.Children.Add(this.content);// ajoute le modele
        myModelVisual3D.Content = myModel3DGroup;
        myModelVisual3D.Content = this.content;
        myViewport3d.Children.Add(myModelVisual3D);
        bmp.Render(myViewport3d);

        this.previewModel.Frames.Add(BitmapFrame.Create(bmp));

        string filepath = "C:\\Users\\Remi\\Desktop\\toto.png";
        using (Stream stm = File.Create(filepath))
        {

            this.previewModel.Save(stm);

        }

    }

问题是生成的位图全黑

完整文件 pastbin: http://paste.isomorphis.me/jgz

感谢您的宝贵时间! :)

更新: 多亏了一个建议,我已经纠正了我使用 measure arrangeInvalidateVisual 初始化布局的方式,但我仍然生成了一个黑色位图。 enter image description here

最佳答案

您必须通过调用 MeasureArrange 方法来运行 Viewport3D 元素的初始布局。您可能还需要调用 InvalidateVisual

myViewport3d.Children.Add(myModelVisual3D);
myViewport3d.Measure(new Size(200, 200));
myViewport3d.Arrange(new Rect(0, 0, 200, 200));
myViewport3d.InvalidateVisual();
bmp.Render(myViewport3d);

关于c# - 将图像从 model3dgroup 的 3D 模型渲染到位图失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086511/

相关文章:

c# - 适用于 .Net 的 Azure 服务管理 API

c# - 为什么某些字体文件不能在 Windows Phone 8 上运行?

c# - 我如何知道导入特定 .NET 命名空间时要包含哪些引用?

c# - WPF 简单验证问题 - 设置自定义 ErrorContent

c# - WPF 控件模板和数据模板

c# - 使用 C# 将 MediumBlob 数据转换为位图图像

c# - Visual C# - 缺少部分修饰符

wpf - 加载控件后立即启动模板动画

android - 将许多大位图图像加载为缩略图 - Android

android - 保持图像质量