Текущий архив: 2004.07.18;
Скачать: CL | DM;
Вниз
Графический редактор: определить объект под крусором. Как? Найти похожие ветки
← →
pirat © (2004-05-03 10:32) [0]Привет :)
Вот решил тут на досуге попробовать написать нечто аналогичное MS Visio. Решил взять Graphics32 за основу. Сразу же свстал вопрос, как определять, какой именно объект находится в данный момент под курсором. Сразу появились две идеи:
1) аналитическая. если объект задается формулой то по ней же проверять находится курсор внутри или снаружи
2) стенсил-буфер :) (кажется это так называется), то есть буфер, в котором для каждой точки экрана прописан индекс объекта в ней отрисованного. Подпходит для любого типа объектов...
Может быть есть еще вариант ???
← →
MBo © (2004-05-03 11:54) [1]Есть еще подход - рисуешь в буферный битмап каждый объект своим личным цветом (например, цвет=индексу объекта в списке), тогда затраты на прорисовку побольше, но с идентификацией нет проблем.
← →
pirat © (2004-05-03 16:57) [2]А вообще имеет смысл использовать GDI/GDI+ библиотеки, или может лучше сразу лепить в DirectX ? ... Apple вот вообще кажется интерфес на OpenGL отрисовывает, и ничего замечательно ополучается...
← →
CyberStorm (2004-05-03 18:08) [3]Ну обычно используют, как ты выразился, аналитический метод определения принадлежности точек объектам, благо проблем с этим нет, в большинстве хватает знаний елементарной математики, в случаях кривых высоких порядков требуются элементы высшей математики. Ну и еще потребуются функции масштабирования, сдвига, поворота объектов.
Затраты времени на создание аналога VISIO будут достаточно большие, если вообще вы не потеряете интерес к этому занятию через 2-3 месяца :)
В свое время я разработал пакет векторных компонентов - трудно сказать насчет сложности проекта, в строках векторный редактор занимает около 35000 строк, объем исходников ~ 700 Кб.
Интенсивно используются динамические массивы и указатели - практически все построено на них, так что обязательно потребуется опыт работы с ними + элементарные познания в геометрии :)
Большинство таких прог не используют DirectX, а пользуются стандартным GDI. Лучше конечно использовать более продвинутый GDI+, возможностей у него поболее
← →
Mihey © (2004-05-03 19:32) [4]В Graphic32 есть система TBitmap32.Layers - т.н. слоёв, картинок в картинке, которые могут реагировать на щелчки мыши.
← →
pirat © (2004-05-03 22:18) [5][B]2CyberStorm[/B]
боюсь, что намного раньше, недели через две-три :) как только будет возможно построить некое подобие связанного графа, вершины которого будут соединяться сплайнами (безье, если найду библиотеку для GR32) и их можно будет таскать ...
а указатели, геометрии - это ерунда :))
← →
Pirat © (2004-05-03 22:19) [6]и к тому же, такой framework ведь можно будет в дальнейшем использовать в другом проекте...
← →
CyberStorm (2004-05-03 23:08) [7]Ну...ну... Pirat флаг вам в руки :) - хотя сомневаюсь, что вы так быстро управитесь, если бы все было так просто, вокруг уже была бы масса навороченных программ с высококачественной векторной графикой - не намного уступающей, к примеру, Corel Draw и тому же VISIO.
На одной из конференций видел заказ на разработку векторного редактора, по ценам Москвы стоимость разработки была от $6000 - это за трехнедельную работу хотели выложить?
← →
pirat © (2004-05-03 23:51) [8]ну ладно, ладно, всякий может честного пирата обидеть :))
где-где вы такой заказ видели ?? :))
ну, у меня была мечта когда то написать свой король дров, по архитектуре как 3dmax но только для двуХмерной графики... тока там ведь не каркас главное, а плагины... вот это одному человеку уже не осилить :(
← →
CyberStorm (2004-05-04 09:48) [9]pirat никто не хотел вас обидеть, просто для человека решившего написать свой редактор (да еще за 2-3 недели) задавать вопросы об алгоритме определения принадлежности точки объекту... ну помягче скажем... немного несерьезно ;) - это самая элементарная задача возникающая при создании подобного редактора :) - и по сути у человека реально готового написать сложную графическую систему проблем вызвать не должна... дальнейшие комментарии излишни...
Страницы: 1 вся ветка
Текущий архив: 2004.07.18;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.049 c