示例#1
0
        //--- Отмена "выбранности" у заданной "выбранной" фигуры
        public void UnselectShape(ShapeBase select_shape)
        {
            int find_idx = _Editor.SelectedShapeList.FindIndex(obj => obj.GetHashCode() == select_shape.GetHashCode());

            if (find_idx >= 0)
            {
                for (int i = 0; i < select_shape.visualControler.ControlPoints.Count; i++)                          // Отменяем "видимость" у маркеров фигуры
                {
                    ((Rectangle)select_shape.visualControler.MarkerPoints[i]).Visibility = Visibility.Hidden;
                }
                select_shape.visualControler.IsSelectedPath = false;                                                // "обнуляем" флаг выбранности у фигуры
                if ((select_shape.shapeType == SHAPE_TYPE.PolyLine || select_shape.shapeType == SHAPE_TYPE.Polygon) && select_shape._List_tBox.Count > 3)
                {
                    select_shape._List_tBox.RemoveRange(3, select_shape._List_tBox.Count - 3);
                }
                _Editor.SelectedShapeList.RemoveAt(find_idx);                                                       //  удаляем фигуру из списка выбраннных
                _Editor.SelectedShapeCount--;                                                                       //  счетчик выбранных фигур уменьшаем на единицу
                _Editor.IsSelectedShapeForEdit = false;                                                             //  флаг наличия редактируемой фигуры - "обнуляем"
                _Editor.SelectedShapeForEdit   = null;                                                              //  таковой больше нет
                _Editor.ClearParamPanels();                                                                         //  "чистим" все текстовые поля ввода параметров

                if (_Editor.EditorMode == EDITOR_MODE.Edit)
                {
                    _Editor.IsEnabledParamPanels(false);                                                            //  запрещаем доступ к панели ручного редактирования параметров
                }
            }
        }
示例#2
0
        //--- Удаление фигуры из Редактора из МенеджераФигур
        public void RemoveShape(ShapeBase shape)
        {
            if (_Editor.SelectedShapeForEdit != null && _Editor.SelectedShapeForEdit.GetHashCode() == shape.GetHashCode())
            {
                _Editor.IsSelectedShapeForEdit = false;                             // Теперь редактируемой фигуры нет
                _Editor.SelectedShapeForEdit   = null;
            }
            if (_Editor.SelectedShapeList != null && _Editor.SelectedShapeList.Contains(shape))
            {
                _Editor.SelectedShapeList.Remove(shape);
                _Editor.SelectedShapeCount--;
            }

            ((ShapeBase)shape).RemoveShapeFromPanels();                             //  Удалем фигуру из всех панелей рисования и обслуживания
            shapeList.Remove(shape);                                                //  Удаляем фигуру из списока обслуживамых фигур
            _Editor.ShapeCount--;                                                   //  Общее кол-во фигур уменьшилось на одну

            switch (shape.shapeType)                                                // В зависимости от типа фигуры уменьшаем счетчик этих фигур на единицу
            {
            case SHAPE_TYPE.Point:
                if (_Editor.PointsCount > 0)
                {
                    _Editor.PointsCount--;
                }
                break;

            case SHAPE_TYPE.Line:
                if (_Editor.LinesCount > 0)
                {
                    _Editor.LinesCount--;
                }
                break;

            case SHAPE_TYPE.PolyLine:
                if (_Editor.PolyLinesCount > 0)
                {
                    _Editor.PolyLinesCount--;
                }
                break;

            case SHAPE_TYPE.Polygon:
                if (_Editor.PolygonsCount > 0)
                {
                    _Editor.PolygonsCount--;
                }
                if (_Editor.EditorMode == EDITOR_MODE.PolygonOperations)
                {
                    if (_Editor.PolygonsCount < 2)
                    {
                        _Editor.EditorMode = EDITOR_MODE.Selection;
                    }
                }
                break;
            }

            if (_Editor.ShapeCount < 1)
            {
                if (_Editor.EditorMode != EDITOR_MODE.DrawNew)
                {
                    _Editor.EditorMode = EDITOR_MODE.ModeUnknown;
                }
            }
        }