private void CreateObjectIdBitmapButton_OnClick(object sender, RoutedEventArgs e) { if (_objectIdRenderingStep == null) { return; } _objectIdRenderingStep.IsEnabled = true; MainDXViewportView.DXScene.DefaultRenderObjectsRenderingStep.IsEnabled = false; try { var renderToBitmap = MainDXViewportView.RenderToBitmap(MainDXViewportView.DXScene.Width, MainDXViewportView.DXScene.Height, preferedMultisampling: 0); string fileName = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "ObjectIds.png"); SaveBitmap(renderToBitmap, fileName); System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(fileName) { UseShellExecute = true }); // For .Net CORE projects we need to set UseShellExecute to true } finally { _objectIdRenderingStep.IsEnabled = false; MainDXViewportView.DXScene.DefaultRenderObjectsRenderingStep.IsEnabled = true; } }
private BitmapSource RenderObjectIdBitmap() { if (_objectIdRenderingStep == null) { return(null); } BitmapSource objectIdBitmap; // Now enable our custom rendering step that will be used only for RenderToBitmap _objectIdRenderingStep.IsEnabled = true; MainDXViewportView.DXScene.DefaultRenderObjectsRenderingStep.IsEnabled = false; try { // Render to the same size as seen on the screen but without multi-sampling and super-sampling objectIdBitmap = MainDXViewportView.RenderToBitmap(MainDXViewportView.DXFinalPixelSize.Width, MainDXViewportView.DXFinalPixelSize.Height, preferedMultisampling: 0, supersamplingCount: 1); if (objectIdBitmap != null) { int bitmapSize = objectIdBitmap.PixelHeight * objectIdBitmap.PixelWidth * 4; // 4 bytes per pixel // Try to reuse the _objectIdPixelsArray if (_objectIdPixelsArray == null || _objectIdPixelsArray.Length < bitmapSize) { _objectIdPixelsArray = new byte[bitmapSize]; } objectIdBitmap.CopyPixels(_objectIdPixelsArray, objectIdBitmap.PixelWidth * 4, 0); _objectIdBitmapWidth = objectIdBitmap.PixelWidth; _objectIdBitmapHeight = objectIdBitmap.PixelHeight; } } finally { _objectIdRenderingStep.IsEnabled = false; MainDXViewportView.DXScene.DefaultRenderObjectsRenderingStep.IsEnabled = true; } return(objectIdBitmap); }