Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
11-1076769216
RA
2004-02-14 17:33
2004.07.18
Меня часто вспрашивают: "А зачем оно надо?".


1-1087807856
GrayFace
2004-06-21 12:50
2004.07.18
Assembler


8-1083567552
gagarin
2004-05-03 10:59
2004.07.18
Цвет в 32-битном режиме


3-1087522022
olhovik
2004-06-18 05:27
2004.07.18
Сортировка в Table


6-1085035555
snake1977
2004-05-20 10:45
2004.07.18
Стандартные средсва передачи сообщений