/* * Metodo resize bounding box con chiamata al vertice in questione */ private void ResizeRect(SKPoint coordinatePixelDetected, ResizeInfo resizeDetected, RectangleArea rectangleArea) { MovimentInfo resizeMovimentDetected = MovimentMethods.GetResizeInfo(coordinatePixelDetected.X, coordinatePixelDetected.Y, bitMapArea.Left, bitMapArea.Top, bitMapArea.Right, bitMapArea.Bottom); switch (resizeDetected) { case ResizeInfo.LeftTopAround: LeftTopResizeCase(coordinatePixelDetected, resizeMovimentDetected, rectangleArea); break; case ResizeInfo.LeftBottomAround: LeftBottomResizeCase(coordinatePixelDetected, resizeMovimentDetected, rectangleArea); break; case ResizeInfo.RightTopAround: RightTopResizeCase(coordinatePixelDetected, resizeMovimentDetected, rectangleArea); break; case ResizeInfo.RightBottomAround: RightBottomResizeCase(coordinatePixelDetected, resizeMovimentDetected, rectangleArea); break; } rectangleArea.OffSetRectHeight = rectangleArea.Bottom - rectangleArea.Top; rectangleArea.OffSetRectWidth = rectangleArea.Right - rectangleArea.Left; rectangleArea.ResizeMove = true; canvasBitMap.InvalidateSurface(); }
/* * Metodo di controllo attività di ridimensionamento bounding box */ private ResizeInfo CheckIfResize(Point coordinateDetected, RectangleArea rectangleArea) { rectangleArea.CalculateVertexCoordinate(); rectangleArea.CalculateOneRadiousCoordinate(coordinateDetected, canvasBitMap); ResizeInfo resizeDetected = MovimentMethods.CheckIfResize(rectangleArea.PixelCoordinateDetected, rectangleArea.OneRadiousPixelCoordinate, rectangleArea.LeftTopPixelCoordinate, rectangleArea.LeftBottomPixelCoordinate, rectangleArea.RightTopPixelCoordinate, rectangleArea.RightBottomPixelCoordinate); return(resizeDetected); }
/* * Metodo per la gestione del movimento del rettangolo mediante la gesture "pan" con contemplazione dei * vari casi presenti e conseguente ricalcolo delle varie coordinate */ private void RectangleMoveArea(Point pointMove, RectangleArea rectangleArea) { SKPoint pixelMove = UtilityFunctions.ConvertToPixel(pointMove, canvasBitMap); MovimentInfo actualMoviment = MovimentMethods.GetMovimentInfo(pixelMove.X, pixelMove.Y, bitMapArea.Left, bitMapArea.Top, bitMapArea.Right, bitMapArea.Bottom, rectangleArea.OffSetRectWidth, rectangleArea.OffSetRectHeight); switch (actualMoviment) { case MovimentInfo.InsideArea: rectangleArea.Bottom = pixelMove.Y + rectangleArea.OffSetRectHeight / 2; rectangleArea.Top = rectangleArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Right = pixelMove.X + rectangleArea.OffSetRectWidth / 2; rectangleArea.Left = rectangleArea.Right - rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideRightOverTop: rectangleArea.Bottom = bitMapArea.Top + rectangleArea.OffSetRectHeight; rectangleArea.Top = bitMapArea.Top; rectangleArea.Right = bitMapArea.Right; rectangleArea.Left = rectangleArea.Right - rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideRight: rectangleArea.Bottom = pixelMove.Y + rectangleArea.OffSetRectHeight / 2; rectangleArea.Top = rectangleArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Right = bitMapArea.Right; rectangleArea.Left = rectangleArea.Right - rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideLeftOverTop: rectangleArea.Bottom = bitMapArea.Top + rectangleArea.OffSetRectHeight; rectangleArea.Top = bitMapArea.Top; rectangleArea.Left = bitMapArea.Left; rectangleArea.Right = bitMapArea.Left + rectangleArea.OffSetRectWidth; break; case MovimentInfo.OverTop: rectangleArea.Bottom = bitMapArea.Top + rectangleArea.OffSetRectHeight; rectangleArea.Top = bitMapArea.Top; rectangleArea.Right = pixelMove.X + rectangleArea.OffSetRectWidth / 2; rectangleArea.Left = rectangleArea.Right - rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideLeftUnderBottom: rectangleArea.Bottom = bitMapArea.Bottom; rectangleArea.Top = rectangleArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Left = bitMapArea.Left; rectangleArea.Right = bitMapArea.Left + rectangleArea.OffSetRectWidth; break; case MovimentInfo.UnderBottom: rectangleArea.Bottom = bitMapArea.Bottom; rectangleArea.Top = rectangleArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Right = pixelMove.X + rectangleArea.OffSetRectWidth / 2; rectangleArea.Left = rectangleArea.Right - rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideLeft: rectangleArea.Bottom = pixelMove.Y + rectangleArea.OffSetRectHeight / 2; rectangleArea.Top = rectangleArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Left = bitMapArea.Left; rectangleArea.Right = bitMapArea.Left + rectangleArea.OffSetRectWidth; break; case MovimentInfo.OutSideRightUnderBottom: rectangleArea.Bottom = bitMapArea.Bottom; rectangleArea.Top = bitMapArea.Bottom - rectangleArea.OffSetRectHeight; rectangleArea.Right = bitMapArea.Right; rectangleArea.Left = bitMapArea.Right - rectangleArea.OffSetRectWidth; break; } canvasBitMap.InvalidateSurface(); }