我正在使用C# WPF,我试图从3D模型渲染2D视图,我可以将其用作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);
}
}
字符串
问题是生成的Bitpmap是全黑。
完整文件pastbin:http://paste.isomorphis.me/jgz
谢谢你的时间!:)
**更新:**感谢一个建议,我已经纠正了我用measure
arrange
和InvalidateVisual
初始化布局的方式,但我仍然生成了一个黑色位图。x1c 0d1x
1条答案
按热度按时间cbjzeqam1#
您必须通过调用
Measure
和Arrange
方法来运行Viewport3D
元素的初始布局。您可能还需要调用InvalidateVisual
。字符串