Я использую Viewport3d и отображаю свои 3D-элементы с унаследованными классами UIElement3D ... Теперь я хочу сделать разные изображения моего видового экрана (разные виды). Это означает, что я должен сделать новый viewport3d во время выполнения и применить свой специфический вид для изображения на нем ..
см. Следующий код:
' Start creating Image
Dim bitmap As New RenderTargetBitmap(800,
800,
96,
96,
PixelFormats.Default)
'--------------------
'Render xamlViewport works perfect
bitmap.Render(xamlViewport)
Using stream As FileStream = New FileStream("C:\\temp\\test_xamlviewport.png", FileMode.Create)
Dim encoder As New PngBitmapEncoder
encoder.Frames.Add(BitmapFrame.Create(bitmap))
encoder.Save(stream)
End Using
'---------------------
'Render local Viewport don't work
Dim oViewport As New Viewport3D
oViewport.Height = 800
oViewport.Width = 800
oViewport.Children.Add(New C3DCuboid())
oViewport.Camera = New PerspectiveCamera(New Point3D(4, 7, 6), New Vector3D(-4, -7, -6), New Vector3D(0, 1, 0), 45)
Dim oVisual As New ModelVisual3D
oVisual.Content = New DirectionalLight(Colors.White, New Vector3D(-1, -2, -3))
oViewport.Children.Add(oVisual)
oViewport.Measure(New Size(800, 800))
oViewport.Arrange(New Rect(New Size(800, 800)))
bitmap = New RenderTargetBitmap(800,
800,
96,
96,
PixelFormats.Default)
bitmap.Render(oViewport)
Using stream As FileStream = New FileStream("C:\\temp\\test_localviewport.png", FileMode.Create)
Dim encoder As New PngBitmapEncoder
encoder.Frames.Add(BitmapFrame.Create(bitmap))
encoder.Save(stream)
End Using
Первое изображение (test_xamlviewport.png) отображается правильно, но второе изображение, где я создаю свой собственный объект Viewport3D и печатаю его, пустое (test_localviewport.png).
Как я могу заставить рендерить мои объекты UIElement3D или почему это не работает, если я создаю новый видовой экран вместо печати существующего экземпляра видового экрана XAML?
Здесь вы найдете пример решения, воспроизводящего мою проблему.
http://cid -df67ca3f85229bd1.office.live.com / self.aspx / Разработка / WpfApplication2.zip
С уважением
Roland