コード例 #1
0
ファイル: MouseTracking.cs プロジェクト: mkbiltek2019/refer
        // Left mouse button click initiates tracking operation.
        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs args)
        {
            base.OnMouseLeftButtonDown(args);

            Point         ptMouse = args.GetPosition(viewport);
            HitTestResult result  = VisualTreeHelper.HitTest(viewport, ptMouse);

            // We're only interested in 3D hits.
            RayMeshGeometry3DHitTestResult result3d =
                result as RayMeshGeometry3DHitTestResult;

            if (result3d == null)
            {
                return;
            }

            // We're only interested in ModelVisual3D hits.
            ModelVisual3D vis3d = result3d.VisualHit as ModelVisual3D;

            if (vis3d == null)
            {
                return;
            }

            // We're only interested in visuals with translate transforms.
            transTracking = vis3d.Transform as TranslateTransform3D;
            if (transTracking == null)
            {
                return;
            }

            LineRange range;

            ViewportInfo.Point2DtoPoint3D(viewport, ptMouse, out range);
            pointOriginal = range.PointFromZ(transTracking.OffsetZ);
            transOriginal = transTracking.Clone();
            isTracking    = true;
            CaptureMouse();
            Focus();

            args.Handled = true;
        }