private void UpdateSelectionRegion(MouseEventArgs e, UpdateMaskType updateType) { if (updateType == UpdateMaskType.ForMouseMoving && e.LeftButton != MouseButtonState.Pressed) { selectionStartPoint = null; } if (selectionStartPoint.HasValue) { selectionEndPoint = e.GetPosition(this); var startPoint = (System.Windows.Point)selectionEndPoint; var endPoint = (System.Windows.Point)selectionStartPoint; var sX = startPoint.X; var sY = startPoint.Y; var eX = endPoint.X; var eY = endPoint.Y; var deltaX = eX - sX; var deltaY = eY - sY; if (Math.Abs(deltaX) >= SystemParameters.MinimumHorizontalDragDistance || Math.Abs(deltaX) >= SystemParameters.MinimumVerticalDragDistance) { isMaskDraging = true; double x = sX < eX ? sX : eX; //Math.Min(sX, eX); double y = sY < eY ? sY : eY; //Math.Min(sY, eY); double w = deltaX < 0 ? -deltaX : deltaX; //Math.Abs(deltaX); double h = deltaY < 0 ? -deltaY : deltaY; //Math.Abs(deltaY); selectionRegion = new Rect(x, y, w, h); } else { if (DefaultSize.HasValue && updateType == UpdateMaskType.ForMouseLeftButtonUp) { isMaskDraging = true; selectionRegion = new Rect(startPoint.X, startPoint.Y, DefaultSize.Value.Width, DefaultSize.Value.Height); } else { isMaskDraging = false; } } } UpdateIndicator(selectionRegion); }
private void UpdateSelectionRegion(MouseEventArgs e, UpdateMaskType updateType) { if (updateType == UpdateMaskType.ForMouseMoving && e.LeftButton != MouseButtonState.Pressed) { selectionStartPoint = null; } if (selectionStartPoint.HasValue ) { selectionEndPoint = e.GetPosition(this); var startPoint = (Point) selectionEndPoint; var endPoint = (Point) selectionStartPoint; var sX = startPoint.X; var sY = startPoint.Y; var eX = endPoint.X; var eY = endPoint.Y; var deltaX = eX - sX; var deltaY = eY - sY; if (Math.Abs(deltaX) >= SystemParameters.MinimumHorizontalDragDistance || Math.Abs(deltaX) >= SystemParameters.MinimumVerticalDragDistance) { isMaskDraging = true; double x = sX < eX ? sX : eX;//Math.Min(sX, eX); double y = sY < eY ? sY : eY;//Math.Min(sY, eY); double w = deltaX < 0 ? -deltaX : deltaX;//Math.Abs(deltaX); double h = deltaY < 0 ? -deltaY : deltaY;//Math.Abs(deltaY); selectionRegion = new Rect(x, y, w, h); } else { if (DefaultSize.HasValue && updateType == UpdateMaskType.ForMouseLeftButtonUp) { isMaskDraging = true; selectionRegion = new Rect(startPoint.X, startPoint.Y, DefaultSize.Value.Width, DefaultSize.Value.Height); } else { isMaskDraging = false; } } } }