Example #1
0
        /// <summary>
        /// Функция вычисление/инициации добавления нового объекта
        /// </summary>
        /// <param name="pos">Координаты добавления нового объекта</param>
        private void AddNewItem(Point pos)
        {
            _items.ForEach(c => c.Deselect());

            ICanvasItem _newObject = null;

            switch (CurrentSettings.Mode)
            {
            case ECanvasMode.BrokenLine:
                _newObject = new CustBrokenLine(pos);
                break;

            case ECanvasMode.Rectangle:
                _newObject = new CustRectangle(pos);
                break;
            }

            if (_newObject == null)
            {
                CurrentSettings.SetCurrentItem();
                CurrentSettings.SetIsDraw(false);
                return;
            }

            AppendNewItem(_newObject);
            CurrentSettings.SetIsDraw(true);
            CurrentSettings.SetCurrentItem(_newObject);

            CurrentSettings.AppendNewAction(ECancelTypes.Add, _newObject);
        }
Example #2
0
        /// <summary>
        /// Функция преобразования xml "документа" в объекты холста
        /// </summary>
        /// <returns>Список объектов</returns>
        public List <UIElement> DeserializeXml(XDocument xDoc)
        {
            var result = new List <UIElement>();

            foreach (var xItem in xDoc.Root.Elements())
            {
                var isBrokenLine = xItem.Name == "CustBrokenLine";

                var xPoints      = xItem.Elements("Point");
                var xThickness   = xItem.Attribute("Thickness");
                var xFillColor   = xItem.Attribute("FillColor");
                var xStrokeColor = xItem.Attribute("StrokeColor");

                var width     = 200d;
                var height    = 100d;
                var Thickness = 1d;
                var points    = new List <CustPoint>();

                foreach (var xPoint in xPoints)
                {
                    var point = new Point();

                    if (double.TryParse(xPoint.Attribute("X").Value, out double X))
                    {
                        point.X = X;
                    }

                    if (double.TryParse(xPoint.Attribute("Y").Value, out double Y))
                    {
                        point.Y = Y;
                    }

                    points.Add(new CustPoint(point));
                }

                if (double.TryParse(xThickness.Value, out double Th))
                {
                    Thickness = Th;
                }

                var fillColor   = (Color)ColorConverter.ConvertFromString(xFillColor.Value);
                var strokeColor = (Color)ColorConverter.ConvertFromString(xStrokeColor.Value);

                if (!isBrokenLine)
                {
                    var xWidth  = xItem.Attribute("Width");
                    var xHeight = xItem.Attribute("Height");

                    if (double.TryParse(xWidth.Value, out double Width))
                    {
                        width = Width;
                    }

                    if (double.TryParse(xHeight.Value, out double Height))
                    {
                        height = Height;
                    }
                }

                IPropertiesItem _newObject = null;
                if (isBrokenLine)
                {
                    _newObject = new CustBrokenLine(points.FirstOrDefault().Point);
                    ((ICanvasItem)_newObject).SetPoints(points);
                }
                else
                {
                    _newObject = new CustRectangle(points.FirstOrDefault().Point);
                    ((IRectangleItem)_newObject).ChangeWidth(width);
                    ((IRectangleItem)_newObject).ChangeHeight(height);
                }
                _newObject.ChangeThickness(Thickness);
                _newObject.ChangeFillColor(new SolidColorBrush(fillColor));
                _newObject.ChangeStrokeColor(new SolidColorBrush(strokeColor));

                result.Add((UIElement)_newObject);
            }

            return(result);
        }