На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Прокрутка карты зажатой левой клавишей мыши

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2
RSS
Прокрутка карты зажатой левой клавишей мыши, Прокрутка карты зажатой левой клавишей мыши
 
Протестировала Ваш пример на Visual Studio2019 -  притормаживания нет.
Видео прилагаю.
 
Цитата
Татьяна Софинова написал:
Протестировала Ваш пример на Visual Studio2019 -  притормаживания нет.
Видео прилагаю.
Да, вижу. Попробую на другой машине, не понимаю в чем проблема.    
 
Может антивирус мешает?
 
Цитата
Andrey Gheleznyakov написал:
Может антивирус мешает?
Не использую антивирус. Если только стандартный виндовый.  
 
Добрый день! По поводу притормаживания при скроле карты.
Апну тему. Заметил, что скрол тормозит если в настройках проекта в VS в  сборке  целевая платформа стоит x86. Ставишь AnyCPU - сносно работает. Ваш тестовый пример, который вы прислали  работал у меня без тормозов как раз для AnyCPU. Библиотеки ядра лежат в  Windows/System32, Windows/SysWOW64. С чем это может быть связано?
 
Any CPU архитектура означает что предпочтения нет и выбирается x86 на x86, x64 на x64 и для Itanium будет x64-процесс с itanium машинным кодом.
Any CPU полезен исключительно для полностью "управляемого" кода (.NET), то есть весь код написан на C#, вызовы "неуправляемого" API отсутствуют.
При использовании GTK Active только в виде COM-компонентов теоретически Any CPU может сработать, поскольку используются хотя и разные библиотеки OCX для x32 и x64, но GUID интерфейсов не меняется. Сами же DLL ГИС ядра для x32 и x64, как Вы знаете, не просто лежат в разных местах, но и имеют разные имена, что уже не попадает под логику Any CPU.
А как только появляются вызовы "неуправляемого" API (напрямую из DLL) флаг Any CPU может очень сильно навредить.
Флаг Any CPU не меняет сам код готового приложения, а только устанавливает в нем признак - в какой среде его выполнять.
При этом директивы "#ifdef", завязанные на разрядность процессора, меняют сам код программы. Будет в итоге несостыковка.

Конкретно в данном случае, скорее всего, при Any CPU на выходе получилось универсальное приложение, которое в Вашей среде выполняется как x64 (что и предполагалось флагом Any CPU).
Как я уже говорил выше, не рекомендуется так делать в приложениях на основе GTK Active.
Лучше сразу установить платформу x64.
Само собой, что приложение собранное под платформу x64 будет работать быстрее, чем для целевой платформы x86.

полезная ссылка по теме
 
Цитата
Денис Вицко написал:
Any CPU архитектура означает что предпочтения нет и выбирается x86 на x86, x64 на x64 и для Itanium будет x64-процесс с itanium машинным кодом.
Any CPU полезен исключительно для полностью "управляемого" кода (.NET), то есть весь код написан на C#, вызовы "неуправляемого" API отсутствуют.
При использовании GTK Active только в виде COM-компонентов теоретически Any CPU может сработать, поскольку используются хотя и разные библиотеки OCX для x32 и x64, но GUID интерфейсов не меняется. Сами же DLL ГИС ядра для x32 и x64, как Вы знаете, не просто лежат в разных местах, но и имеют разные имена, что уже не попадает под логику Any CPU.
А как только появляются вызовы "неуправляемого" API (напрямую из DLL) флаг Any CPU может очень сильно навредить.
Флаг Any CPU не меняет сам код готового приложения, а только устанавливает в нем признак - в какой среде его выполнять.
При этом директивы "#ifdef", завязанные на разрядность процессора, меняют сам код программы. Будет в итоге несостыковка.

Конкретно в данном случае, скорее всего, при Any CPU на выходе получилось универсальное приложение, которое в Вашей среде выполняется как x64 (что и предполагалось флагом Any CPU).
Как я уже говорил выше, не рекомендуется так делать в приложениях на основе GTK Active.
Лучше сразу установить платформу x64.
Само собой, что приложение собранное под платформу x64 будет работать быстрее, чем для целевой платформы x86.

полезная ссылка по теме
Денис, спасибо за развернутый ответ. Вся проблема в том, что разрабатываю в Win10 x64 для Win7 x32. C Опциями AnuCPu и x64 скролится нормально, а x86 нет.  
1) Подскажите, после релиза  на машине где будет выполняться приложение должна быть зарегистрирована библиотека GTK Active и библиотеки ядра должны находится в каталоге с приложением?
2) Не совсем по теме. В панораме Мини изображение объектов на карте как бы сглажено, без резких краев. Как это достигается?  
 
1. Регистрация ocx и нахождение библиотек - согласно документации (могут быт разные варианты).
2. Изображение карты может быть разным, например, только экранное, принтерное (наиболее красивое, но и медленное, и т.п.). Вид отображения определяется свойством ViewType
 
Дополнительно с применением различных видов отрисовки (принтерный, векторный) может использоваться режим антиалиасинга - экранного сглаживания.

Цитата

// Установить режим отображения графики с антиалиасингом
// flag - ненулевое значение устанавливает режим качественного вывода
// Если он включен в Windows, то рисование работает в однопоточном режиме из за
// локировок внутри библиотеки GDI+.
// При старте программы установлен режим отображения c антиалиасингом
// Возвращает предыдущее значение

_MAPIMP long int _MAPAPI mapSetAntialiasedQuality(long int flag);

// Запросить режим отображения графики с антиалиасингом

_MAPIMP long int _MAPAPI mapGetAntialiasedQuality();
Страницы: Пред. 1 2
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности