Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
gargon
Зарегистрирован: 14.12.2006 Сообщения: 14
|
Добавлено: Пт 11 Янв 2008 18:08 Заголовок сообщения: Перемещение рисованного объекта |
|
|
Необходимо рисовать некоторый объект на карте (IIngeoPaintSurface), после чего этот объект будет изменять свои координаты, поэтому должен быть отображен в другом месте, а предыдущий рисунок должен быть затерт. Проще говоря, должна быть реализована анимация на карте. Затирание объекта полной перерисовкой карты не допустимо, так как частота перемещения объекта высокая и будет возникать мерцание экрана.
Есть ли какие-нибудь методы копирования участка карты, чтобы в дальнейшем его можно было восстановить?
C уважением, Артур Никифоров, НПЦ Инфотранс |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Вс 13 Янв 2008 01:41 Заголовок сообщения: |
|
|
Если в качестве перемещающегося объекта используется обычный пространственный объект ИнГео, то достаточно просто менять его координаты - ИнГео сама перерисует нужные участки.
Если же Вы все-таки решили сами управлять процессом перерисовки, то обратите внимание на свойство Surface.DC - можете использовать его напрямую посредством Windows API.
От себя же рекомендую не заморачиваться и использовать способ, описанный мной в первом абзаце. Мы одно время баловались с трамваем, который ездил туда-сюда по заданному маршруту на карте - перерисовка не напрягала, мерцания практически не было заметно. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
gargon
Зарегистрирован: 14.12.2006 Сообщения: 14
|
Добавлено: Вт 15 Янв 2008 14:10 Заголовок сообщения: |
|
|
Да но в приведенном вами первом методе будут производится постоянные обращения к базе - а это трафик, что нас не устраивает... |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Ср 23 Янв 2008 21:28 Заголовок сообщения: |
|
|
Большого трафика не будет. Ингео кэширует информацию об объектах. |
|
Вернуться к началу |
|
 |
gargon
Зарегистрирован: 14.12.2006 Сообщения: 14
|
Добавлено: Пн 28 Янв 2008 16:53 Заголовок сообщения: |
|
|
А как убрать изменение курсора при вызове IIngeoMapObjects.UpdateChanges? А то не очень красиво, когда курсор мигает каждые 2 секунды. Предполагаю, что никак |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Вт 29 Янв 2008 20:24 Заголовок сообщения: |
|
|
Тогда только через Surface.DC либо как вариант создать свое окно с картинкой из Ингео |
|
Вернуться к началу |
|
 |
Борис Салтыков

Зарегистрирован: 19.05.2008 Сообщения: 42 Откуда: angarsk / msk
|
Добавлено: Чт 18 Фев 2010 14:26 Заголовок сообщения: Перерисовка изменившихся подписей |
|
|
Как быть если подпись отображает динамически изменяемое значение семантического поля, ведь при изменении значения даже нажатие F5
(перерисовка) не приводит к обновлению подписи. Помогает только дисконнект-коннект, что не хотелось бы.
Наблюдение: если я обновляю значение через паспорт ингео (вызывается по ctrl-1), то F5 помогает увидеть новое значение в подписи, а если значение меняет внешняя программа (прямо в базе), то F5 бессилен
т.е. нужна какая-то супер перерисовка, обновляющая кэш, но не требующая дисконнекта-коннекта |
|
Вернуться к началу |
|
 |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Чт 18 Фев 2010 16:26 Заголовок сообщения: |
|
|
естественно, что данные не отобразатся.
если вы хотите менять семантику и видеть ее изменение в Инего, вы должны менять эту семантику используя api Ингео. _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Сб 20 Фев 2010 17:30 Заголовок сообщения: |
|
|
Если установить Surface.Pen.Mode = pmNotXor, то при нечетном вызове PaintContour контур рисуется, при четном - затирается. При этом перерисовки карты не происходит. |
|
Вернуться к началу |
|
 |
RuslanG

Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
|
Добавлено: Ср 24 Фев 2010 11:39 Заголовок сообщения: Re: Перерисовка изменившихся подписей |
|
|
Борис Салтыков писал(а): | ...нужна какая-то супер перерисовка, обновляющая кэш, но не требующая дисконнекта-коннекта |
Нужно сбросить кэш у таблицы и перерисовать экран после изменения в базе.
Пример на VBS: Код: | // Сбрасываем кэш таблицы
dim aTable
set aTable = ActiveDb.SemTableFromID("000100000403")
aTable.DropCache
// Перерисовываем окно карты
MainWindow.MapWindow.Invalidate |
Не рекомендуется менять значения напрямую в базе. Используйте API ИнГео. _________________ С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия |
|
Вернуться к началу |
|
 |
Борис Салтыков

Зарегистрирован: 19.05.2008 Сообщения: 42 Откуда: angarsk / msk
|
Добавлено: Чт 25 Фев 2010 14:00 Заголовок сообщения: |
|
|
спасибо, помогло |
|
Вернуться к началу |
|
 |
|