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