Ejemplo n.º 1
0
        /*
         * 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();
        }
Ejemplo n.º 2
0
        /*
         * 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);
        }
Ejemplo n.º 3
0
        /*
         * 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();
        }