Graph template
Реализовать иерархию классов соответствующую графическим элементам - Line, Rect, Circle, Text, Image. Предусмотреть корневой элемент. Для каждого элемента предусмотреть свойства, задающие размер, положение элемента (в пикселях или в процентах от размера родителя). Для геометрических примитивов определить свойства, задающие цвет (границ и заливки), толщину границ (в пикселях или процентах от размеров родителя). Для Text определить свойства цвета и размера шрифта. Для Image организовать возможность получить изображение из файла или в виде массива байт. Все свойства всех элементов должны поддерживать механизм биндингов, т.е. на корневом элементе может быть свойство контекста данных принимающее некоторый объект, а все дочерние элементы используют свойства этого объекта для получения значений собственных свойств. В этом случае свойство элемента задается как путь по свойствам в виде строки (например SomeData.SomeObjectProperty.TargetPropertyWithNeededValue) (Аналог Bindings в XAML). Реализовать отрисовку полученного шаблона (System.Drawing.Graphics). Предусмотреть возможность сериализации шаблона (без объекта, выполняющего роль контекста данных) в json и его десериализации. В качестве контекста данных может быть задан как экземпляр некоторого класса, так и json. Покрыть тестами.
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |