在WPF中渲染MeshGeometry3D的Imagebrush分辨率

在WPF中渲染MeshGeometry3D的Imagebrush分辨率,wpf,Wpf,我正在使用WPF中的MeshGeometry3D可视化一些空间数据。我注意到,将ImageBrush传递给DiffuseMeterial的构造器可以快速高效地进行3D可视化和操作(而不是使用VisualBrush)。我的解决方案在下面的代码块中,其中this.dataMeshModel是包含网格的GeometryModel3D。问题是,我必须给位图图像源提供非常高的分辨率(1000),以使网格看起来漂亮且可区分。选择这个高dpi看起来很奇怪,很容易引发内存异常。有什么建议吗?数据模型看起来像10

我正在使用WPF中的MeshGeometry3D可视化一些空间数据。我注意到,将ImageBrush传递给DiffuseMeterial的构造器可以快速高效地进行3D可视化和操作(而不是使用VisualBrush)。我的解决方案在下面的代码块中,其中this.dataMeshModel是包含网格的GeometryModel3D。问题是,我必须给位图图像源提供非常高的分辨率(1000),以使网格看起来漂亮且可区分。选择这个高dpi看起来很奇怪,很容易引发内存异常。有什么建议吗?数据模型看起来像1000 dpi和4000 dpi。谢谢

    private void assignTexture(Geometry gridGeom, double textureDPI, double gridThickness)
    {
        // rendering the grid on a DrawingVisual
        DrawingVisual dv = new DrawingVisual();
        using (var dvc = dv.RenderOpen())
        {
            dvc.DrawRectangle(Brushes.Tomato, null, gridGeom.Bounds);
            dvc.DrawGeometry(null, new Pen(Brushes.Black, gridThickness), gridGeom);
        }
        if (dv.Drawing.CanFreeze)
        {
            dv.Drawing.Freeze();
        }
        //rendering the DrawingVisual to an image
        Rect bounds = dv.ContentBounds;
        RenderTargetBitmap renderedBitmap = new RenderTargetBitmap(
            (int)(bounds.Width * this.textureDPI / 96),
            (int)(bounds.Height * this.textureDPI / 96),
            this.textureDPI,
            this.textureDPI,
            PixelFormats.Pbgra32);
        renderedBitmap.Render(dv);
        // adding the rendered image to create an imagebrush
        ImageBrush imBrush = new ImageBrush(renderedBitmap);
        //creating the material
        DiffuseMaterial dataMeshMaterial = new DiffuseMaterial(imBrush);
        this.dataMeshModel.Material = this.dataMeshMaterial;
    }

那么你的实际问题是什么?您有一些性能问题?我能做些什么来避免这种高分辨率吗?它使用了大量内存,特别是当数据较大时,我可能会出现内存不足异常。