Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Перемещение рисованного объекта

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Заголовок сообщения: Ответить с цитатой

Большого трафика не будет. Ингео кэширует информацию об объектах.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
gargon



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

СообщениеДобавлено: Пн 28 Янв 2008 16:53    Заголовок сообщения: Ответить с цитатой

А как убрать изменение курсора при вызове IIngeoMapObjects.UpdateChanges? А то не очень красиво, когда курсор мигает каждые 2 секунды. Предполагаю, что никак
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Вт 29 Янв 2008 20:24    Заголовок сообщения: Ответить с цитатой

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



Зарегистрирован: 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 ИнГео.

_________________
С уважением, Руслан Гадеев
Видео уроки ИнГео
Документация ИнГео
Обновления ИнГео
Интегропедия
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Борис Салтыков



Зарегистрирован: 19.05.2008
Сообщения: 42
Откуда: angarsk / msk

СообщениеДобавлено: Чт 25 Фев 2010 14:00    Заголовок сообщения: Ответить с цитатой

спасибо, помогло
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

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


© phpBB Group
Русская поддержка phpBB