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