www.map-info.ru :: Просмотр темы - Изменить шаг масштабирование колесиком мыши
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу 1, 2, 3  След.
 
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Сб Окт 15, 2011 7:31 pm    Заголовок сообщения: Изменить шаг масштабирование колесиком мыши Добавить ответ со ссылкой на данный текст

Как в mapinfo можно изменить масштабирование при помощи колесика мышки? Хотелось бы сделать меньше шаг и центр масштабирования-указатель мыши. Примерно как в AutoCad.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Вс Окт 16, 2011 8:04 pm    Заголовок сообщения: Дело сдвинулось Добавить ответ со ссылкой на данный текст

Шаг масштаба я изменил. Осталось центр масштабирования.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пн Окт 17, 2011 9:59 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Расскажите, как?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Пн Окт 17, 2011 11:55 pm    Заголовок сообщения: Изменение масштаба Добавить ответ со ссылкой на данный текст

Вешаемся на функцию winchangedhandler. Перед этим создаём глобальную переменную типа float для запоминания предыдущего масштаба. При увеличении карты срабатывает winchangedhandler. Масштаб увеличивается вдвое, я его тут же меняю на предыдущий*коэффициент. В конце функции предыдущему масштабу присваиваем текущий. Я применил коэффициент 1.5. Всё отлично работает.
Сейчас заканчиваю изменение масштаба на указателе мыши. Осталось "расковырять" как получить координаты мыши в пикселях.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Окт 18, 2011 6:37 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Как с морганием карты? Сильно заметно?
Координаты мыши можно получить только со статус-бара, предварительно переключив карту в показ координат там:
Set Map Display Position
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Ср Окт 19, 2011 12:59 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Моргания нет. Программа отрабатывает быстрее, чем дисплей начинает реагировать. Т.е. дисплею умножили масштаб на 2, пока он это понял, уже переделали на 1.5. Это если на словах. На деле все работает идеально. Если надо, опубликую исходник.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Ср Окт 19, 2011 1:51 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Считать строку statusbar пока не нашел
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Вс Ноя 13, 2011 1:23 pm    Заголовок сообщения: Победа. Добавить ответ со ссылкой на данный текст

Сделал. Масштабируется с нужным шагом относительно указателя мыши. Работает отлично. Совет по Статус бар оказался тупиковым, только время потерял.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вс Ноя 13, 2011 2:37 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Через статус-бар координаты мыши можно считать только через OLE-взаимодействие. У вас видимо программа на чистом MapBasic? Тогда да, события такого в MapBasic нет.
Поделитесь, как получилось считать координаты мыши в MapBasic? Создали свою кнопку и перекрыли ей стандартные ZoomIn/ZoomOut?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Чт Ноя 17, 2011 12:52 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Считал текущий курсор мыши в пикселях при помощи user32. Получил текущие координаты окна в пикселях (та же user32). Получил минимальную и максимальную широту-долготу окна (тут уже MapBasic палок в колеса не ставит). Дальше чистая математика.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Чт Ноя 17, 2011 8:27 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Хотелось бы все таки получить координаты напрямую. Не подскажете как через OLE?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пт Ноя 18, 2011 6:16 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Через координаты экрана это круто... А если проекция посложнее, чем широта/долгота?

В OLE нужно вешать callback-объект на события MapInfo. И штатный callback-метод SetStatusText:

Если Вы используете метод MapInfo SetCallback, MapInfo может автоматически генерировать обратные вызовы для вашего объекта IDispatch. Обратные вызовы стандарта MapInfo имеют следующий синтаксис:

SCODE SetStatusText(LPCTSTR lpszMessage)
MapInfo вызывает метод SetStatusText всякий раз, когда изменяется содержание строки сообщений в MapInfo. Единственный аргумент - новый этой строки.

Смотрите раздел Интегрированная Картография в справке по MapBasic.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Пн Ноя 21, 2011 11:06 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Моя задача привязать указатель мыши к карте. Думаю изменение проекцие ничего не меняет, ведь физически экран двухмерный. CallBack, по моему мнению, не то что надо, ведь в этом случае MapBasic теряет управление, что меня не устраивает.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Dashiva



Зарегистрирован: 25.04.2008
Сообщения: 20

СообщениеДобавлено: Ср Ноя 23, 2011 5:55 pm    Заголовок сообщения: Re: Победа. Добавить ответ со ссылкой на данный текст

Nick4 писал(а):
Сделал. Масштабируется с нужным шагом относительно указателя мыши. Работает отлично. Совет по Статус бар оказался тупиковым, только время потерял.


Nick, то есть вам удалось написать утилиту, которая меняет стандартную схему навигации на аналогичную автокаду? Круто! А можете выложить для широкого доступа? Или только за отдельную плату?))))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Вс Ноя 27, 2011 12:23 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Я не жадный. Завтра выложу. Хотя интересно, а сколько вы готовы бы заплатить за копию? Ваш ответ ничего не меняет. Утилиту выложу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
На страницу 1, 2, 3  След.
Страница 1 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru