Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: C# : Сетевой граф  (Прочитано 22961 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Lex_cool
Гость
« : 24-04-2006 20:52 » 

У меня на форме в PictureBox-e стоит корта города, мне надо сделать возможность нанесения на её улицы линий (граф построить) ну типа как в Autucad кнопочку нажал - линию провёл...   если кто-то делал что-либо подобное подскажите как это можно реализовать...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 24-04-2006 21:05 » 

ну это... в обработчике сообщения WM_LBUTTONDOWN делаем MouseCapture() (при этом сообщения мыши будут попадать только в это окно). Далее в WM_MOUSEMOVE - рисуем линию (динамически меняющуюся).  В WM_LBUTTONUP - делаем ReleaseCapture() и запоминаем точку начала и конца линии. А если, скажем нажали правую кнопку не отпуская левой, то ReleaseCapture() и отмена.
Записан

Lex_cool
Гость
« Ответ #2 : 24-04-2006 21:13 » 

А кода нет под рукой, а то я ещё слабо разбираюсь в терминах?)))
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 25-04-2006 15:09 » 

кода , к сожалению, нет, я даже не знаю, что значит C# Улыбаюсь
просто предполагаю, что под виндой в любой среде программирования всё примерно одинаково делается...

если никто вскоре не напишет решение - попробую код набросать в VC6, там наверное по аналогии сделаешь

Записан

Mouse
Молодой специалист

ru
Offline Offline

« Ответ #4 : 25-04-2006 16:05 » new

Lex, сформулируй подробнее, чего хочешь от программы. это просто рисование линий, как например в Paint, или создание объекта Граф? пиши, разберемся Ага
Записан
Lex_cool
Гость
« Ответ #5 : 25-04-2006 20:10 » 

Mouse,  Меня интересует создание объектов(дорог, знаков) , т.к. дальше будет реализовываться поиск кратчайшего пути с учётом правил дорожного движения и т.д.))))
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 25-04-2006 20:31 » 

Давай с самого начала. Я так понял: У тебя есть отсканированная карта. Ты хочеш ввести электронный вариант этой карты.
Теперь некоторые мысли. Каждый перекресток это узел. Дороги соединяюшие узлы, это ребра. Каждое ребро имеет вес. Параметрами веса должны быть  длина в метрах, загруженность и.т.д. Заморачиваться особо на правилах дорожного движения не стоит. Самое главное знать свойства ребер. Т.е. ребра одностороние или двухстороние. Или вообше не сушествует ребра между двумя данными узлами.
Некоторые параметры могут зависеть от времени. Т.е. разрешен ли проезд в данный момент времени в данном направлении.
« Последнее редактирование: 25-04-2006 20:33 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #7 : 25-04-2006 20:34 » 

Так в чем конкретно проблема? Система это непростая, как математически, так и со стороны визуального представления. Для начала направления работы такие: по математике - дискретная математика, задача коммивояжера, поиск кратчайшего пути на весовом графе; по программированию - работа с рисованием и с событиями мыши. Рисование - объект Graphics, мышь - события MouseUp, MouseDown, MouseMove и другие. Кстати, у тебя уже есть какие-нибудь наработки?
Записан
Lex_cool
Гость
« Ответ #8 : 25-04-2006 20:44 » 

Finch, да всё именно так как ты сказал...  я не собираюсь особо заморачиваться с нанесением ПДД, мне просто надо реализовать средства для их нанесения, ну и там немного нанести, для вида, что-бы показать, что работает...
Записан
Lex_cool
Гость
« Ответ #9 : 25-04-2006 20:48 » 

Mouse, да ничего стоящего пока нет, но целиком решать задачи о которых ты упомянул, мне нет смысла, да и времени не хватит, мне надо просто сделать как бы редактор карты, типа добавить дорогу, добавить знак....
Записан
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #10 : 26-04-2006 06:26 » 

Чтобы показать, нужно чтобы это работало, а такую задачу имхо легче реализовать добротно, чем абы как. У тебя реально отслеживаются две части системы - первая наносит объекты на карту и формирует граф, вторая занимается математической стороной вопроса. Для демонстрационных целей начать явно следует с рисования.

Наверное, тебе хочется хранить значки, нанесенные на карту, между запусками программы. И чтобы значки переносились на карту drag-drop'ом. Сам понимаешь, для такой программы самое главное - чтобы ей было удобно пользоваться, пусть даже единственным пользователем будет директор, который пару раз щелкнет мышкой. Я себе это так разумею, и сам реализовывал бы именно так. Если ты хочешь нечто другое, напиши что конкретно у тебя не получается решить
« Последнее редактирование: 19-12-2007 21:58 от Алексей1153++ » Записан
Lex_cool
Гость
« Ответ #11 : 26-04-2006 20:57 » 

Mouse,  Мне сначала действительно надо сделать графическую часть, чтобы после нанесения на карту они сохранялись, а уже потом я буду дамать над математикой....   просто ещё до конца не решено, что математически мне предстоит решьть... нужен ли поиск пути или нет....
Записан
Lex_cool
Гость
« Ответ #12 : 26-04-2006 21:38 » 

Finch, ты с пониманием задаёшь вопросы..   занимался чем-то подобным?Не понял
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #13 : 26-04-2006 22:14 » 

Finch, ты с пониманием задаёшь вопросы..   занимался чем-то подобным?Не понял
Именно ГИСом я не занимался. Но примерно представляю, как это должно выглядить. Просто я не совсем хорошо представляю специфику и возможности  C#. Поэтому не могу в полной мере советовать, как лучше сделать. Например я бы узел описал бы в структуре. Также и ребро. Просто уже потом бы использовал бы класс для хранения и работы с онными. 
Конечно есть и второй вариант. На узел и ребро сделать свой класс (в принципе они должны быть родственными). Когда пользователь ставит на карту метку узла. Создается объект узла.
« Последнее редактирование: 26-04-2006 22:17 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
dark_n
Гость
« Ответ #14 : 02-08-2006 04:28 » 

Привет, Ну как успехи ?У меня аналогичная задача, я думаю интегрировать ГИС в свое приложение.
Пока прицеливаюсь к ObjectLand(есть библиотека com-объектов) и MapInfo(встроен язык прог-я + простота интеграции в delphi через OLE).Тут главное сразу пойти по правильному пути , и поэтому я не тороплюсь Улыбаюсь (просто пока ясной картины нету)

Жалко что нет OLE  контейнера в с# .
з.ы. топик старый , все равно  надеюсь  на комментарии

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines