/// <summary>
        /// Функция обновления состояния контроллера
        /// </summary>
        public void Refresh()
        {
            Clear();

            if (CurrentSettings.GetItem == null)
            {
                return;
            }
            else if (CurrentSettings.GetItem is IRectangleItem)
            {
                _item = (IRectangleItem)CurrentSettings.GetItem;
            }
            else if (CurrentSettings.GetItem is IPropertiesItem)
            {
                _item = (IPropertiesItem)CurrentSettings.GetItem;
            }

            if (_item == null)
            {
                return;
            }

            var tabControl = new TabControl();

            tabControl.Items.Add(CreateFillColorTabItem());
            tabControl.Items.Add(CreateStrokeColorTabItem());
            PropertiesPanel.Children.Add(CreateThicknessStackPanel());
            if (_item is IRectangleItem)
            {
                PropertiesPanel.Children.Add(CreateWidthStackPanel());
                PropertiesPanel.Children.Add(CreateHeightStackPanel());
            }

            PropertiesPanel.Children.Add(tabControl);
        }
        public PropertiesPanelControl()
        {
            InitializeComponent();

            _item = null;
            CurrentSettings.RefreshDelegate += Refresh;
        }
Esempio n. 3
0
 /// <summary>
 /// Функция отмены действия изменения толщины линий объекта
 /// </summary>
 /// <param name="obj">Объект действия</param>
 /// <param name="thickness">Значение толщины</param>
 private static void CancelThickness(IPropertiesItem obj, double thickness)
 => obj.ChangeThickness(thickness);
Esempio n. 4
0
 /// <summary>
 /// Функция отмены действия изменения цвета линий объекта
 /// </summary>
 /// <param name="obj">Объект действия</param>
 /// <param name="brush">"Кисть" с цветом</param>
 private static void CancelStrokeColor(IPropertiesItem obj, Brush brush)
 => obj.ChangeStrokeColor(brush);
Esempio n. 5
0
 /// <summary>
 /// Функция отмены действия изменения цвета заполнения объекта
 /// </summary>
 /// <param name="obj">Объект действия</param>
 /// <param name="brush">"Кисть" с цветом</param>
 private static void CancelFillColor(IPropertiesItem obj, Brush brush)
 => obj.ChangeFillColor(brush);
Esempio n. 6
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);
        }