Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Графический редактор: определить объект под крусором. Как? [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]

Есть еще подход - рисуешь в буферный битмап каждый объект своим личным цветом (например, цвет=индексу объекта в списке), тогда затраты на прорисовку побольше, но с идентификацией нет проблем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо