Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2017, 17:52   #31
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
скажите пжл, то что Вы делаете в вебе будет работать? и ничего похожего ещё в вебе не реализовано? спс
web средства - не моя специализация. Macromedia Flash - как-то работал. Через ActiveX - работать может. Надо только сертификат сделать.
Я уже писал, что ядро библиотеки зависит только от System и System.Drawing. В этом плане она не только хорошо портируется, но и достаточно безопасна.
Остаётся как-то передавать потоки данных - принимать, сохранять.

Последний раз редактировалось LV1974; 24.12.2017 в 18:07.
LV1974 вне форума Ответить с цитированием
Старый 25.12.2017, 10:11   #32
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Когда открываешь свою поделку, то появляются люди с вопросами.
Это хорошо.
Однако после нескольких месяцев ударной работы по 19 часов в сутки, такая ситуация может полностью выбить из колеи. Это мы проходили.

Поэтому, как я думаю, лучше сразу выкладывать поделку с самого раннего этапа, и дорабатывать по частям.

Обозревая перспективу, я тоже имею определённые пожелания.
Мне сейчас надо 3 сотрудника:
1. Разработчики расширений функционала библиотеки.
2. Дизайнер кнопок и демонстраций.
3. Разработчики прикладных редакторов и тестеры.
LV1974 вне форума Ответить с цитированием
Старый 26.12.2017, 18:39   #33
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию версия 0.5

версия 0.5
Класс LCallback - упразднён.
Теперь обратный вызов происходит через действия LUIAction или LUITracker.
Сделал масштабирование колёсиком - Ctrl+MouseWheel.
Добавил ограничения на масштабирование вида.
Скорректировал перемещения с учётом масштаба.
Добавил в контекст таблицу стилей LStyleSheet с именами.
Добавил класс настроек LSettings.
Добавил контрол LControlObjectGrid, с браузером объектов и таблицей свойств.
Увязал выбор компонентов, изменение свойств и обновление вида.
Вложения
Тип файла: zip LiteView 0.5.zip (98.3 Кб, 8 просмотров)
LV1974 вне форума Ответить с цитированием
Старый 03.01.2018, 15:21   #34
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию Версия 0.6

Версия 0.6
Сделал резиновый прямоугольник выделения Shift + LButton + MouseMove.
Сделал клонирование компонентов.
Сделал классы LHandle, LHandleBuffer, LHelper.
Сделал отрисовку хэндлов с оптимизацией и стилями.
Теперь можно покрутить хэндлы компонентов.

+ В архиве:
1. История версий,
2. Мануал,
3. Исходники,
4. Исполняемый файл и библиотеки.
Вложения
Тип файла: zip LiteView 0.6.zip (106.2 Кб, 8 просмотров)

Последний раз редактировалось LV1974; 03.01.2018 в 17:30. Причина: +
LV1974 вне форума Ответить с цитированием
Старый 08.01.2018, 13:34   #35
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию Версия 0.7

0.7
Сделал отрисовку сетки и прицеливание по сетке.
Сделал класс пределов LLimits.
Сделал и увязал скролбары.
Сделал линейки вида.
Сделал прокрутку холста по колёсику.
Сделал отображение холста на панели обозревателя.
Вложения
Тип файла: zip LiteView 0.7.zip (112.1 Кб, 7 просмотров)
LV1974 вне форума Ответить с цитированием
Старый 15.01.2018, 16:44   #36
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию Версия 0.8

Цитата из документации:
Цитата:
Фигуры образуют следующую иерархию классов:
1. На основе прямоугольника:
1.1. Прямоугольник,
1.2. Эллипс,
1.3. На основе углов:
1.3.1. Дуга или Сегмент,
1.3.2. Сектор,
2. На основе списка точек:
2.1. Линия или Полигон,
2.2. Кривая,
2.3. Безье,

Фигуры (за исключением прямоугольника и эллипса) могут быть открытыми или закрытыми (флаг Closed).
Все фигуры могут быть или с заливкой или только с окантовкой (флаг Filled).

Теперь я хочу перечислить предпринятые действия для того чтобы пользователь мог перемещать вершины кривых линий в пару кликов:
1. Создал стиль рисования хэндлов HandleVertex.
2. Сделал отрисовку этого хэндла в буфере LHandleBuffer.
3. Создал класс LHandleVertex.
4. Добавил список HandleVertexs в основной класс LShapePolyline.
5. Создал трекер LUITrackerMoveVertex.
6. Подключил этот трекер к конфигурации редактора.
7. Создал команду изменения позиции LCommandMoveVertex для стека отмены.
8. В классе компонента LShapePolyline реализовал методы UpdateVertexs(), HitTestHandle(), DrawVertexs().
9. Скорректировал ряд взаимодействий. Исправил ошибки.


Вопрос о трансформациях. Пока в библиотеке используются только аффинные трансформации. Для реализации прочих трансформаций необходима реализация отрисовки и проверка попадания. Это можно сделать через трансформацию объекта GraphicPath. Тогда первичное формирование, рисование рамки и заполнения, а также проверка попадания, будут использовать стандартную реализацию.
Здесь следует быть осторожным, поскольку в System.Drawing есть некорректная реализация GraphicPath.AddClosedCurve(). Особенность заключается в том, что неверно вычисляется ограничивающий прямоугольник такой кривой. Поэтому пока от этой функции пришлось отказаться.

При манипуляции линиями, полигонами и кривыми есть одна тонкая проблема. Она заключается в том, что манипуляция с простой аффинной трансформацией такого объекта и манипуляция с его вершинами, приводит к расхождению координат. Об этом стоит сказать чуть подробнее.
Пусть есть линия, у которой имеется окантовочный прямоугольник Baunds и аффинная трансформация. Пока мы управляем только трансформацией или только вершинами – всё будет нормально. Однако если при манипуляции вершинами изменились границы фигуры, то существующая матрица аффинных преобразований уже не будет соответствовать окантовке этой фигуры.
Что же можно сделать?
Вариантов несколько. Например, можно корректировать трансформацию такого объекта при перемещении вершин. А можно преобразовывать вершины при каждой новой трансформации, сводя её к единичной матрице.
Решение зависит от рода поставленной задачи редактирования.
Оставляю эту проблему в версии 0.8, чтобы можно было посмотреть.
0.8
Сделал демонстрацию фигур: прямоугольник, эллипс, дуга, сектор, линия, полигон, кривая, Безье.
Сделал основные трансормации фигур по хэндлам.
Сделал перемещение вершин кривых линий по хэндлам.
Сделал ряд небольших исправлений. Подработал документацию.
Оставил проблему расхождения при редактировании вершин кривых и её трансформации.

В архиве - как обычно:
Документация, история версий, исходники и демонстрационный исполняемый файл с библиотеками.
Вложения
Тип файла: zip LiteView 0.8.zip (166.9 Кб, 12 просмотров)
LV1974 вне форума Ответить с цитированием
Старый 15.01.2018, 18:59   #37
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

GDI+ ?
kvitaliy вне форума Ответить с цитированием
Старый 15.01.2018, 19:42   #38
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от kvitaliy Посмотреть сообщение
GDI+ ?
судя по исходникам, он самый
pu4koff вне форума Ответить с цитированием
Старый 20.01.2018, 13:55   #39
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию LiteView 0.9

Версия 0.9
Поправил проверку попадания в границу незалитых фигур.
Сделал изменение курсора при попадении в фигуру или хэндл.
Сделал контрол стилей и их свойств.
Сделал выбор и установку стиля по его имени в компоненте.
Сделал создание новых стилей.
Сделал панель для создания новых компонентов.
Реализовал функционал создания простых компонентов.
Сделал удаление компонентов по кнопке Delete.

Цитата:
Теперь о том, что пришлось предпринять, чтобы реализовать функционал создания новых фигур:
1. Создал панель со списком LControlNew, для выбора типа создаваемых компонентов.
2. Сделал параметрический трекер для создания простых фигур - public class LUITrackerNew<T> : LUITracker where T : LComponent {}.
3. Подключил панель к редактору и сделал наполнение списка создаваемых фигур через параметрический трекер.
4. Поправил класс LUIProcessor для установки текущего трекера.
5. Сделал класс-команду вставки/удаления компонентов LCommandInsertRemove.
6. Подключил команду к трекеру.
В архиве - как обычно:
Документация, история версий, исходники и демонстрационный исполняемый файл с библиотеками.
Вложения
Тип файла: zip LiteView 0.9.zip (180.5 Кб, 8 просмотров)

Последний раз редактировалось LV1974; 20.01.2018 в 13:59.
LV1974 вне форума Ответить с цитированием
Старый 20.01.2018, 16:04   #40
LV1974
Заблокирован
 
Регистрация: 09.08.2017
Сообщений: 1,136
По умолчанию

Отмечу, что для пользы дела в ближайшем будущем, могут помочь:
1. Тестеры,
2. Программисты расширений библиотеки,
3. Программисты вариантов редактора библиотеки,
4. Программист-математик для реализации трансформаций,
5. Программист растровых эффектов,
6. Программист анимации,
7. Дизайнер.

Последний раз редактировалось LV1974; 20.01.2018 в 16:32.
LV1974 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Геометрия, как найти скалярное произведение? Алексей_2012 Помощь студентам 8 10.11.2014 23:29
Как откосить от информатики? Max1548 Свободное общение 5 25.10.2011 17:18
Как Программно создать раздел E:\ KWN, lnc Общие вопросы Delphi 18 27.08.2009 13:37
как добавить модули в раздел uses kate158 Общие вопросы Delphi 1 25.08.2009 09:52