在WPF中渲染MeshGeometry3D的Imagebrush分辨率
我正在使用WPF中的MeshGeometry3D可视化一些空间数据。我注意到,将ImageBrush传递给DiffuseMeterial的构造器可以快速高效地进行3D可视化和操作(而不是使用VisualBrush)。我的解决方案在下面的代码块中,其中this.dataMeshModel是包含网格的GeometryModel3D。问题是,我必须给位图图像源提供非常高的分辨率(1000),以使网格看起来漂亮且可区分。选择这个高dpi看起来很奇怪,很容易引发内存异常。有什么建议吗?数据模型看起来像1000 dpi和4000 dpi。谢谢在WPF中渲染MeshGeometry3D的Imagebrush分辨率,wpf,Wpf,我正在使用WPF中的MeshGeometry3D可视化一些空间数据。我注意到,将ImageBrush传递给DiffuseMeterial的构造器可以快速高效地进行3D可视化和操作(而不是使用VisualBrush)。我的解决方案在下面的代码块中,其中this.dataMeshModel是包含网格的GeometryModel3D。问题是,我必须给位图图像源提供非常高的分辨率(1000),以使网格看起来漂亮且可区分。选择这个高dpi看起来很奇怪,很容易引发内存异常。有什么建议吗?数据模型看起来像10
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;
}
那么你的实际问题是什么?您有一些性能问题?我能做些什么来避免这种高分辨率吗?它使用了大量内存,特别是当数据较大时,我可能会出现内存不足异常。