Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.03.2009, 15:04
Darken Darken вне форума
Прохожий
 
Регистрация: 24.02.2009
Сообщения: 48
Репутация: 10
По умолчанию карттография или как найти себе головную боль за 30 секунд ))

Сразу скажу, что только начинаю поэтому некоторые вопросы могут показаться глупыми или неактуальными, заранее прошу прощения и прошу не писать сообщений типа RTFM и тому подобное.

В общем пишу прогу. В ней:
1. В имадж загружается карта из внешней картинки
2. Над картой должна быть сетка с возможностью масштабирования
3. Над картой есть имадж на котором будут рисоваться маршруты и различные геометрические фигуры, позже будет происходить измерение пути, расчет площади отдельных участков и т.д.

Я очень вообще не работал с графикой, поэтому у меня появился ряд вопросов.

1. Как сделать так чтобы координатная сетка (она у меня сделана DrawGrid) всегда находилась под имаджем на котором я рисую, но над имаждем с картой и можно ли ее сделать прозрачной? Может у кого-то есть опыт написания подобных программ и сетку можно сделать другим более удобным способом?

2. Меняются ли у DrawGrid способ отражения линий сетки? Можно ли из сделать пунктиром или еще как?

3. Как сделать так чтобы принажатии на кнопку проверялось нарисовано ли что-то на верхнем имажде и если нарисовано - все очищалось бы.

Может у кого есть литература по графическим возможностям Delphi, а то во всех известных мне источниках очень мало информации именно по графическим возможностям. Буду благодарен если кто поделится исходником похожей программы или программы с похожими функциями.
Ответить с цитированием
  #2  
Старый 10.03.2009, 15:53
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Не нужно тут использовать лишний контрол (графгрид), рисуй сетку прямо по карте.
Проверку делай так: если что-то рисовал - то очищай, в противном случае - все равно очищай
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 10.03.2009, 16:05
Darken Darken вне форума
Прохожий
 
Регистрация: 24.02.2009
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Не нужно тут использовать лишний контрол (графгрид), рисуй сетку прямо по карте.
Проверку делай так: если что-то рисовал - то очищай, в противном случае - все равно очищай

можно поподробнее? чет не совсем понял
Ответить с цитированием
  #4  
Старый 10.03.2009, 17:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я бы делал так:
1. Сделал бы некоторый TBitmap, куда грузится карта.
2. Отображение делал бы с помощью TPaintBox, в обработчике которого OnPaint отрисовывал бы карту и уже поверх нее сетку, маршруты и все другие вещи.
3. Вопрос отрисовки и очистки решается с помощью условий отрисовки в OnPaint вышеупомянутого компоенета. Т.е. машруты, например, хранятся в виде массива координат. Если массив пуст, то и отрисовывать ничего не надо.

Теперь пара замечаний.
Прямая реализация такого механизма вполне работоспособно, но требует много ресурсов, ечли карта большая. Поэтому сразу лучше продумать механизм динамической подгрузки карты из разныз кусочков. Как вариант - резать карту на куски, перекрывающиеся на 50% и каждый кусок должен быть больше "окна просмотра" в 2 раза или вообще не перекрывающиеся. В первом случае подгрузка требует нахождения нужного куска карты. Во втором случае - нахождение нужных 1-4 кусков и отображения их. Первый способ затратнее по общим ресурсам, второй - по коду (он сложнее).

Ну а дальше - думай как что надо реализовать.
Ответить с цитированием
  #5  
Старый 10.03.2009, 17:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я бы делал так:
1. Сделал бы некоторый TBitmap, куда грузится карта.
2. Отображение делал бы с помощью TPaintBox, в обработчике которого OnPaint отрисовывал бы карту и уже поверх нее сетку, маршруты и все другие вещи.
3. Вопрос отрисовки и очистки решается с помощью условий отрисовки в OnPaint вышеупомянутого компоенета. Т.е. машруты, например, хранятся в виде массива координат. Если массив пуст, то и отрисовывать ничего не надо.

Теперь пара замечаний.
Прямая реализация такого механизма вполне работоспособно, но требует много ресурсов, ечли карта большая. Поэтому сразу лучше продумать механизм динамической подгрузки карты из разныз кусочков. Как вариант - резать карту на куски, перекрывающиеся на 50% и каждый кусок должен быть больше "окна просмотра" в 2 раза или вообще не перекрывающиеся. В первом случае подгрузка требует нахождения нужного куска карты. Во втором случае - нахождение нужных 1-4 кусков и отображения их. Первый способ затратнее по общим ресурсам, второй - по коду (он сложнее).

Ну а дальше - думай как что надо реализовать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter