Example #1
0
        private void imageCanvasMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            bool monitorMouseClickBehaviour = false;

            if (_touchEnabled)
            {
                return;
            }

            if (_model.ImageProperties.DrawingRegions2D.IsRoiDrawing && IsROIDrawEnabled)
            {
                monitorMouseClickBehaviour = true;
                Point imagePoint = e.GetPosition(backgroundImage);
                _model.ImageProperties.DrawingRegions2D.AddRoiPoint(new Point(imagePoint.X / Zoom, imagePoint.Y / Zoom));
                if (!_model.ImageProperties.DrawingRegions2D.IsRoiDrawing)
                {
                    monitorMouseClickBehaviour = false;
                }
                if (_model.ImageProperties.RulersViewingPlanes.IsRulerDrawing || _model.ImageProperties.RulersViewingPlanes.IsMultipleRulerDrawing)
                {
                    _model.ImageProperties.RulersViewingPlanes.CancelRulerDrawing();
                    _model.ImageProperties.RulersViewingPlanes.CancelMultipleRulerDrawing();
                    monitorMouseClickBehaviour = false;
                }
            }
            else if (_model.IsZoomDrawing && IsROIDrawEnabled)
            {
                monitorMouseClickBehaviour = true;
                Point imagePoint = e.GetPosition(backgroundImage);
                _model.AddZoomPoint(imagePoint);
                _zoomPoints.Add(Mouse.GetPosition(imageCanvasBorder));
                _placementPoints.Add(Mouse.GetPosition(placementCanvas));
                if (_model.ZoomPathPoints.Count == 2)
                {
                    RectangularZoom();
                }
                else if (_model.ZoomPathPoints.Count > 2)
                {
                    _model.IsZoomDrawing = false;
                    _isRectangularZoom   = false;
                    _zoomPoints.Clear();
                    _placementPoints.Clear();
                    monitorMouseClickBehaviour = false;
                }
                if (_model.ImageProperties.RulersViewingPlanes.IsRulerDrawing || _model.ImageProperties.RulersViewingPlanes.IsMultipleRulerDrawing)
                {
                    _model.ImageProperties.RulersViewingPlanes.CancelRulerDrawing();
                    _model.ImageProperties.RulersViewingPlanes.CancelMultipleRulerDrawing();
                    monitorMouseClickBehaviour = false;
                }
            }
            else if (
                (_model.ImageProperties.RulersViewingPlanes.IsRulerDrawing || _model.ImageProperties.RulersViewingPlanes.IsMultipleRulerDrawing) &&
                (_model.ImageProperties.RulersViewingPlanes.CanLockRulerDrawing() || _model.ImageProperties.RulersViewingPlanes.IsRulerDrawingIndex(ViewingPlaneIndex)))
            {
                monitorMouseClickBehaviour = true;
                if (!_model.ImageProperties.RulersViewingPlanes.IsRulerDrawingInit())
                {
                    _model.ImageProperties.RulersViewingPlanes.InitRulerDrawing(ViewingPlaneIndex);
                }

                Point imagePoint = e.GetPosition(backgroundImage);

                if (_model.ImageProperties.RulersViewingPlanes.DrawingRulerPathPoints.Count < 2)
                {
                    _model.ImageProperties.RulersViewingPlanes.DrawingRulerPathPoints.Add(new Point(imagePoint.X / Zoom, imagePoint.Y / Zoom));
                }
                else if (_model.ImageProperties.RulersViewingPlanes.DrawingRulerPathPoints.Count == 2)
                {
                    _model.ImageProperties.RulersViewingPlanes.FinishRulerDrawing();
                    monitorMouseClickBehaviour = false;
                }
                else if (_model.ImageProperties.RulersViewingPlanes.DrawingRulerPathPoints.Count > 2)
                {
                    _model.ImageProperties.RulersViewingPlanes.CancelRulerDrawing();
                    monitorMouseClickBehaviour = false;
                }
            }
            else if (!dragging)
            {
                dragging = true;
                _p0      = e.GetPosition(placementCanvas);
                _y0      = Canvas.GetTop(imageCanvasBorder);
                _x0      = Canvas.GetLeft(imageCanvasBorder);
            }

            if (IsCurrentROIDrawingCancellable())
            {
                _contextMenuAllowedToOpen = false;
            }

            if (monitorMouseClickBehaviour ^ _mouseClickBehavior.IsElementRegistered())
            {
                if (monitorMouseClickBehaviour)
                {
                    _mouseClickBehavior.RegisterElement();
                }
                else
                {
                    _mouseClickBehavior.UnregisterElement();
                    _contextMenuAllowedToOpen = true;
                }
            }
        }