Там ысчо регится нуда.....
Понимаю.
Я ту ссылку привёл, чтобы показать насколько системное программирование отличается от прикладного кода.
Библиотека и встраиваемый редактор интерактивной векторной графики LiteView
Реализация: C# DotNet 2.0.В проект входит:
1. Библиотека основных классов LiteView,
2. Библиотека пользовательских элементов управления LiteViewControls,
3. Приложение редактор для тестов и демонстрации.
4. Этот документ описания и история версий.
Проект предназначен для создания встраиваемых редакторов схем, диаграмм, графиков и презентаций. В основу положен 15 летний опыт разработки подобных редакторов. Наиболее близким аналогом является библиотека Objective View от Stingray.
Отличительной особенностью LiteView является сочетание простоты и функциональности, что позволяет её гибко расширять и настраивать под конкретные задачи.
Основа LiteView зависит только от сборок System и System.Drawing. LiteViewControls зависит ещё и от WindowsForms.
Такая слабая зависимость от системных библиотек позволяет её легко портировать на другую платформу или подключить альтернативное графическое ядро.
Основным классом является LContext. Через него происходит взаимодействие редактора с пользовательскими контролами.
Этот класс похож на контроллер из модели MVC. Однако его полномочия намного шире. Он доступен для любых объектов, т.к. объявлен как статический член LContext.Current. Для реализации нескольких редакторов, документов и видов, этот контекст надо переключать при активизации соответствующего элемента управления. Это небольшая плата за простоту и гибкость.
Иерархия объектов приложения может выглядеть следующим образом:
1. Приложение,
2. Документ,
3. Фрейм,
4. LControlView, - пользовательский элемент управления,
5. LContext, - контекст,
6. LComponentView, - вид,
7. LComponentCanvas, - холст или страницы,
8. LComponentGroup, - группа (опционно),
9. LComponentXXX, - любой другой компонент.
В библиотеке реализовано несколько иерархий:
1. Иерархия компонентов LComponent и фигур LShape.
2. Иерархия стилей LStyle, для шрифта, кисти и пера.
3. Иерархия команд LCommand для стеков Undo/Redo.
4. Иерархия действий для реакции на пользователя LUIAction, LUITracker.
Ещё есть ряд специализированных классов.