|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
карттография или как найти себе головную боль за 30 секунд ))
Сразу скажу, что только начинаю поэтому некоторые вопросы могут показаться глупыми или неактуальными, заранее прошу прощения и прошу не писать сообщений типа RTFM и тому подобное.
В общем пишу прогу. В ней: 1. В имадж загружается карта из внешней картинки 2. Над картой должна быть сетка с возможностью масштабирования 3. Над картой есть имадж на котором будут рисоваться маршруты и различные геометрические фигуры, позже будет происходить измерение пути, расчет площади отдельных участков и т.д. Я очень вообще не работал с графикой, поэтому у меня появился ряд вопросов. 1. Как сделать так чтобы координатная сетка (она у меня сделана DrawGrid) всегда находилась под имаджем на котором я рисую, но над имаждем с картой и можно ли ее сделать прозрачной? Может у кого-то есть опыт написания подобных программ и сетку можно сделать другим более удобным способом? 2. Меняются ли у DrawGrid способ отражения линий сетки? Можно ли из сделать пунктиром или еще как? 3. Как сделать так чтобы принажатии на кнопку проверялось нарисовано ли что-то на верхнем имажде и если нарисовано - все очищалось бы. Может у кого есть литература по графическим возможностям Delphi, а то во всех известных мне источниках очень мало информации именно по графическим возможностям. Буду благодарен если кто поделится исходником похожей программы или программы с похожими функциями. |
#2
|
||||
|
||||
Не нужно тут использовать лишний контрол (графгрид), рисуй сетку прямо по карте.
Проверку делай так: если что-то рисовал - то очищай, в противном случае - все равно очищай Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
Цитата:
можно поподробнее? чет не совсем понял |
#4
|
|||
|
|||
Я бы делал так:
1. Сделал бы некоторый TBitmap, куда грузится карта. 2. Отображение делал бы с помощью TPaintBox, в обработчике которого OnPaint отрисовывал бы карту и уже поверх нее сетку, маршруты и все другие вещи. 3. Вопрос отрисовки и очистки решается с помощью условий отрисовки в OnPaint вышеупомянутого компоенета. Т.е. машруты, например, хранятся в виде массива координат. Если массив пуст, то и отрисовывать ничего не надо. Теперь пара замечаний. Прямая реализация такого механизма вполне работоспособно, но требует много ресурсов, ечли карта большая. Поэтому сразу лучше продумать механизм динамической подгрузки карты из разныз кусочков. Как вариант - резать карту на куски, перекрывающиеся на 50% и каждый кусок должен быть больше "окна просмотра" в 2 раза или вообще не перекрывающиеся. В первом случае подгрузка требует нахождения нужного куска карты. Во втором случае - нахождение нужных 1-4 кусков и отображения их. Первый способ затратнее по общим ресурсам, второй - по коду (он сложнее). Ну а дальше - думай как что надо реализовать. |
#5
|
|||
|
|||
Я бы делал так:
1. Сделал бы некоторый TBitmap, куда грузится карта. 2. Отображение делал бы с помощью TPaintBox, в обработчике которого OnPaint отрисовывал бы карту и уже поверх нее сетку, маршруты и все другие вещи. 3. Вопрос отрисовки и очистки решается с помощью условий отрисовки в OnPaint вышеупомянутого компоенета. Т.е. машруты, например, хранятся в виде массива координат. Если массив пуст, то и отрисовывать ничего не надо. Теперь пара замечаний. Прямая реализация такого механизма вполне работоспособно, но требует много ресурсов, ечли карта большая. Поэтому сразу лучше продумать механизм динамической подгрузки карты из разныз кусочков. Как вариант - резать карту на куски, перекрывающиеся на 50% и каждый кусок должен быть больше "окна просмотра" в 2 раза или вообще не перекрывающиеся. В первом случае подгрузка требует нахождения нужного куска карты. Во втором случае - нахождение нужных 1-4 кусков и отображения их. Первый способ затратнее по общим ресурсам, второй - по коду (он сложнее). Ну а дальше - думай как что надо реализовать. |