//--- Смена выбранной фигуры в режиме редактирования public void ReselectShapeForEdit(ShapeBase new_select_shape) { UnselectAllShapes(); // Убираем пометки выбора у всех выбранных до этого фигур SelectShape(new_select_shape); // и выбираем заданную в параметре }
//--- Удаление фигуры из Редактора из МенеджераФигур 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; } } }