示例#1
0
        private void surface_MouseMove(object sender, MouseEventArgs e)
        {
            if (!DataReady)
            {
                return;
            }

            if (_projection == null || _projection.Empty)
            {
                return;
            }

            bool outOfSurface;
            var  point2D = Surface2Image(new Point(e.X, e.Y), out outOfSurface);

            Debug.Print(point2D.X + ":" + point2D.Y);

            if (!outOfSurface)
            {
                _probe.Dencity(_projection.Pixels[point2D.X, point2D.Y]);
            }

            if (_cropLock == CropLock.None) // not locked
            {
                var cropLock = MouseOverCropBox(point2D);

                if (cropLock != CropLock.None) //can lock on click
                {
                    Cursor = Cursors.Hand;
                }
                else
                {
                    if (!outOfSurface)
                    {
                        Cursor = Cursors.Cross;
                    }
                    else
                    {
                        Cursor = Cursors.Default;
                    }
                }
            }

            var crop = _labelMapSet.Current.Crop;

            switch (_axis)
            {
            case Axis.X:
                switch (_cropLock)
                {
                case CropLock.YL:
                    crop.YL = point2D.X;
                    break;

                case CropLock.YR:
                    crop.YR = point2D.X;
                    break;

                case CropLock.ZL:
                    crop.ZL = point2D.Y;
                    break;

                case CropLock.ZR:
                    crop.ZR = point2D.Y;
                    break;
                }
                break;

            case Axis.Y:
                switch (_cropLock)
                {
                case CropLock.XL:
                    crop.XL = point2D.X;
                    break;

                case CropLock.XR:
                    crop.XR = point2D.X;
                    break;

                case CropLock.ZL:
                    crop.ZL = point2D.Y;
                    break;

                case CropLock.ZR:
                    crop.ZR = point2D.Y;
                    break;
                }
                break;

            case Axis.Z:
                switch (_cropLock)
                {
                case CropLock.XL:
                    crop.XL = point2D.X;
                    break;

                case CropLock.XR:
                    crop.XR = point2D.X;
                    break;

                case CropLock.YL:
                    crop.YL = point2D.Y;
                    break;

                case CropLock.YR:
                    crop.YR = point2D.Y;
                    break;
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }