public HeatmapRenderingSample() { InitializeComponent(); // Use CameraControllerInfo to show that we can use left mouse button to set custom beam destination on the 3D model CameraControllerInfo.AddCustomInfoLine(0, MouseCameraController.MouseAndKeyboardConditions.LeftMouseButtonPressed, "SET BEAM DESTINATION"); // When the ViewportBorder size is change the size of the overlay Canvas (drawn over the 3D scene) ViewportBorder.SizeChanged += delegate(object sender, SizeChangedEventArgs args) { UpdateOverlayCanvasSize(); }; // Process mouse events ViewportBorder.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e) { // Start user beam control _isUserBeamControl = true; ViewportBorder.CaptureMouse(); var position = e.GetPosition(ViewportBorder); ProcessMouseHit(position); }; ViewportBorder.MouseLeftButtonUp += delegate(object sender, MouseButtonEventArgs e) { // Stop user beam control _isUserBeamControl = false; ViewportBorder.ReleaseMouseCapture(); ProcessMouseOutOfModel(); }; // Subscribe to MouseMove to allow user to specify the beam target ViewportBorder.MouseMove += delegate(object sender, MouseEventArgs e) { if (_isUserBeamControl) { ProcessMouseHit(e.GetPosition(ViewportBorder)); } else { ProcessMouseOutOfModel(); } }; this.Loaded += delegate(object sender, RoutedEventArgs args) { LoadTestModel(); // Start animating the beam position CompositionTarget.Rendering += CompositionTargetOnRendering; }; // Cleanup this.Unloaded += delegate(object sender, RoutedEventArgs args) { CompositionTarget.Rendering -= CompositionTargetOnRendering; }; }
public VertexColorRenderingSample() { InitializeComponent(); CreateGradientColorsArray(); // Use CameraControllerInfo to show that we can use left mouse button to set custom beam destination on the 3D model CameraControllerInfo.AddCustomInfoLine(0, MouseCameraController.MouseAndKeyboardConditions.LeftMouseButtonPressed, "SET BEAM DESTINATION"); // When the ViewportBorder size is change the size of the overlay Canvas (drawn over the 3D scene) ViewportBorder.SizeChanged += delegate(object sender, SizeChangedEventArgs args) { UpdateOverlayCanvasSize(); }; // Process mouse events ViewportBorder.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e) { // Start user beam control _isUserBeamControl = true; ViewportBorder.CaptureMouse(); var position = e.GetPosition(ViewportBorder); ProcessMouseHit(position); }; ViewportBorder.MouseLeftButtonUp += delegate(object sender, MouseButtonEventArgs e) { // Stop user beam control _isUserBeamControl = false; ViewportBorder.ReleaseMouseCapture(); ProcessMouseOutOfModel(); }; // Subscribe to MouseMove to allow user to specify the beam target ViewportBorder.MouseMove += delegate(object sender, MouseEventArgs e) { if (_isUserBeamControl) { ProcessMouseHit(e.GetPosition(ViewportBorder)); } else { ProcessMouseOutOfModel(); } }; // Start animating the beam position CompositionTarget.Rendering += CompositionTargetOnRendering; // We add test models after the DXScene is initialized (this is required because specifal effects require DirectX device) MainDXViewportView.DXSceneInitialized += delegate(object sender, EventArgs e) { if (MainDXViewportView.DXScene == null) { return; // Probably WPF 3D rendering } // Get _vertexColorEffect that will be used to render model with vertex colors (note that this field must be disposed when it is not used any more - here in Unloaded event handler) AddTestModels(); }; // Cleanup this.Unloaded += delegate(object sender, RoutedEventArgs args) { CompositionTarget.Rendering -= CompositionTargetOnRendering; if (_vertexColorMaterial != null) { _vertexColorMaterial.Dispose(); _vertexColorMaterial = null; } if (_lineMaterial != null) { _lineMaterial.Dispose(); _lineMaterial = null; } MainDXViewportView.Dispose(); }; }