コード例 #1
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Окончание захвата от управления курсора
            /// </summary>
            /// <param name="point">Точка в координатах канвы</param>
            //---------------------------------------------------------------------------------------------------------
            public override void EndCapturePosition(ref Vector2Df point)
            {
                // Если была включена привязка
                if (XCadManager.CanvasViewer.SnapIsExsisting)
                {
                    // Смещение курсора мыши в координатах канвы от текущей точки привязки
                    Vector2Df snap_offset = XCadManager.CanvasViewer.SnapMouseOffsetCanvas;
                    snap_offset -= XCadManager.Editor.CapturePointOffset;

                    if (this == XCadManager.Editor.CaptureElement)
                    {
                        // Корректируем на величину смещения от опорной точки элемента
                        Vector2Df snap_point = XCadManager.CanvasViewer.SnapPoint - XCadManager.Editor.CapturePointOffset;
                        UpdateCapturePosition(ref snap_point, ref snap_offset);
                    }
                    else
                    {
                        // Графический элемент в составе множества - только перемещение
                        // Перемещаем графический элемент
                        mStartPoint += snap_offset;
                        mEndPoint   += snap_offset;
                    }

                    SetHandleRects();
                }

                // Если было включено копирование
                if (XCadManager.Editor.ModifyIsCopy)
                {
                    // 1) Создаем новый объект
                    CCadShapeLine line = Duplicate() as CCadShapeLine;
                    //mBaseDocument.AddExistingElement(line);
                    line.UpdateBoundsRect();

                    // 2) Восстанавливаем старые координаты
                    mStartPoint = mCachedStartPoint;
                    mEndPoint   = mCachedEndPoint;

                    // 3) Добавляем новый в объекты копирования
                    //XCadManager.Editor.CopyElements.Add(line);
                }

                UpdateBoundsRect();
                NotifyPropertyChanged(PropertyArgsStartPoint);
                NotifyPropertyChanged(PropertyArgsEndPoint);
                NotifyPropertyChanged(PropertyArgsLocation);

                mHandleIndex = -1;
                SetHandleCursor();

                // Обновляем канву
                //XCadManager.Canvas.Update();
            }
コード例 #2
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Окончание захвата от управления курсора
            /// </summary>
            /// <param name="point">Точка в координатах канвы</param>
            //---------------------------------------------------------------------------------------------------------
            public override void EndCapturePosition(ref Vector2Df point)
            {
                // Если была включена привязка
                if (XCadManager.CanvasViewer.SnapIsExsisting)
                {
                    if (this == XCadManager.Editor.CaptureElement)
                    {
                        //Vector2Df snap_point = //XCadManager.CanvasViewer.SnapPoint;
                        //Vector2Df snap_offset = //XCadManager.CanvasViewer.SnapMouseOffsetCanvasOfCapture;

                        //UpdateCapturePosition(ref snap_point, ref snap_offset);
                    }
                    else
                    {
                        // Графический элемент в составе множества - только перемещение
                        // Перемещаем графический элемент
                        //Vector2Df delta = XCadManager.CanvasViewer.SnapMouseOffsetCanvasOfCapture;
                        //mStartPoint += delta;
                        //mEndPoint += delta;
                    }

                    SetHandleRects();
                }

                // Если было включено копирование
                if (XCadManager.Editor.ModifyIsCopy)
                {
                    // 1) Создаем новый объект
                    CCadShapeLine line = Duplicate() as CCadShapeLine;
                    //mBaseDocument.AddExistingElement(line);
                    line.UpdateBoundsRect();

                    // 2) Восстанавливаем старые координаты
                    //mStartPoint = mCachedStartPoint;
                    //mEndPoint = mCachedEndPoint;

                    // 3) Добавляем новый в объекты копирования
                    //XCadManager.Editor.CopyElements.Add(line);
                }

                //UpdateBoundsRect();
                NotifyPropertyChanged(PropertyArgsStartPoint);
                NotifyPropertyChanged(PropertyArgsEndPoint);

                mHandleIndex = -1;
                SetHandleCursor();
            }