public static void ResizeElement(this UIElement element, double handleTop, double handleLeft) { if (element.GetType() != typeof(ResizeHandle)) { return; } ResizeHandle handle = (ResizeHandle)element; UIElement canvasElement = canvaselements[handle.ElemntId]; SetBounds(canvasElement); if (canvasElement.GetType().BaseType == typeof(ReportLineBase)) { minSizeParameter = 1; switch (handle.ResizeHandleType) { case ResizeHandlesEnum.LeftBottom: canvasElement.SetPropertyValue("StrokeThickness", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Height", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Width", CalculateLeftWidth(handleLeft)); canvasElement.SetPropertyValue("LineLength", DistanceConverter.ConvertPixelToCm(CalculateLeftWidth(handleLeft))); Canvas.SetLeft(canvasElement, (handleLeft + HandleSize)); break; case ResizeHandlesEnum.LetfTop: double leftTophicknes = (bottom - handleTop) - HandleSize; if (leftTophicknes < 1) { leftTophicknes = 1; } canvasElement.SetPropertyValue("StrokeThickness", leftTophicknes); Canvas.SetTop(canvasElement, (handleTop + HandleSize)); canvasElement.SetPropertyValue("Height", leftTophicknes); canvasElement.SetPropertyValue("Width", CalculateLeftWidth(handleLeft)); canvasElement.SetPropertyValue("LineLength", DistanceConverter.ConvertPixelToCm(CalculateLeftWidth(handleLeft))); Canvas.SetLeft(canvasElement, (handleLeft + HandleSize)); break; case ResizeHandlesEnum.RightBottom: canvasElement.SetPropertyValue("StrokeThickness", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Height", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Width", CalculateRightWidth(handleLeft)); canvasElement.SetPropertyValue("LineLength", DistanceConverter.ConvertPixelToCm(CalculateRightWidth(handleLeft))); break; case ResizeHandlesEnum.RightTop: double rightTopThicknes = (bottom - handleTop) - HandleSize; if (rightTopThicknes < 1) { rightTopThicknes = 1; } canvasElement.SetPropertyValue("StrokeThickness", rightTopThicknes); Canvas.SetTop(canvasElement, (handleTop + HandleSize)); canvasElement.SetPropertyValue("Height", rightTopThicknes); canvasElement.SetPropertyValue("Width", CalculateRightWidth(handleLeft)); canvasElement.SetPropertyValue("LineLength", DistanceConverter.ConvertPixelToCm(CalculateRightWidth(handleLeft))); break; } } else { minSizeParameter = 10; switch (handle.ResizeHandleType) { case ResizeHandlesEnum.LeftBottom: canvasElement.SetPropertyValue("Height", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Width", CalculateLeftWidth(handleLeft)); Canvas.SetLeft(canvasElement, (handleLeft + HandleSize)); break; case ResizeHandlesEnum.LetfTop: canvasElement.SetPropertyValue("Height", CalculateTopHeight(handleTop)); Canvas.SetTop(canvasElement, (handleTop + HandleSize)); canvasElement.SetPropertyValue("Width", CalculateLeftWidth(handleLeft)); Canvas.SetLeft(canvasElement, (handleLeft + HandleSize)); break; case ResizeHandlesEnum.RightBottom: canvasElement.SetPropertyValue("Height", CalculateBottomHeight(handleTop)); canvasElement.SetPropertyValue("Width", CalculateRightWidth(handleLeft)); break; case ResizeHandlesEnum.RightTop: canvasElement.SetPropertyValue("Height", CalculateTopHeight(handleTop)); Canvas.SetTop(canvasElement, (handleTop + HandleSize)); canvasElement.SetPropertyValue("Width", CalculateRightWidth(handleLeft)); break; } } MoveHandles(canvasElement, handle.ResizeHandleType); }