Example #1
0
        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();
        }
Example #2
0
 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);
     }
 }