private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { // Get the mouse in screen space. Point pt = e.GetPosition(Renderer.Viewport3D); // Obtain the Visual3D objects under the mouse pointer. var result = VisualTreeHelper.HitTest(Renderer.Viewport3D, pt); var resultMesh = result as RayMeshGeometry3DHitTestResult; if (resultMesh == null) { return; } // Look up the display from all those rendered. dDragging = Renderer.GetDisplay(resultMesh.VisualHit as ModelVisual3D); indexDragging = -1; // Find the index of the closest corner in that display. if (dDragging != null) { indexDragging = dDragging.FindClosestCornerIndex(Renderer.TransformToViewport(pt), 0.3); } // If we have a corner, update the homography. if (indexDragging != -1) { dDragging[indexDragging] = Renderer.TransformToViewport(pt); } // Capture the mouse. CaptureMouse(); }
private void Window_MouseMove(object sender, MouseEventArgs e) { // If the mouse is captured and we are already dragging. if (IsMouseCaptured && (dDragging != null && indexDragging != -1)) { // Get the mouse point and update the homography. Point ptMouse = e.GetPosition(Renderer.Viewport3D); dDragging[indexDragging] = Renderer.TransformToViewport(ptMouse); } }