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

Как визуально сохранить толщину линий

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Как визуально сохранить толщину линий, Как визуально сохранить толщину линий
 

На пользовательской карте, созданной к карте region.sit  (базовый масштаб 400000) создаю по точкам из массива pointArray графический объект - свою ломаную линию:

 

          IMGLINE parm;                                

          parm.Thick = PIX2MKM(2);

          parm.Color = RGB(255,0,0);    

          if (mapRegisterDrawObject(info, NLayer, LOCAL_LINE)!=0)      {

                 mapAppendDraw(info, IMG_LINE, (const char *)&parm);

                 for ( int i = 0; i < PointCount; i++ )          mapAppendPointPlane(info, pointArray[i].x, pointArray[i].y);

 

                 long Number=mapCommitWithPlace(info);

           }

Как сделать так, чтобы визуально толщина линии не менялась при изменении масштаба наипростейшим способом?


Пока что пытаюсь подправлять графические параметры при изменении масштаба (масштаб меняется по нажатию кнопки на экранной форме)
с учетом величины растяжения карты относительно базового масшаба -

             info=mapReadObjectByNumber(mapHandle, hSite, info, 1, Number);

             if (mapDrawCount(info)==0) return;

             if (mapDrawImage(info,1)==128)    {

                         const char * parm=mapDrawParameters(info,1);

                         IMGLINE *parm1 =(IMGLINE*)parm;

                         Parm1->Thick=PIX2MKM(2.0/mapGetDrawScale(mapHandle));

                        mapDeleteDraw(info,1);

                        mapAppendDraw(info, IMG_LINE, (const char *)parm1);

                        Number=mapCommitWithPlace(info);

           }

Это хлопотно. Можно ли как либо отметить, чтобы этот графический объект сохранял толщину. И как задать первоначальную толщину (не на глаз) , чтобы линия также была видна при переходе на карту мира.
 
Здравствуйте!

Для Ваших целей подойдет установка для графического объекта флага "Не сжимать" с помощью функции mapSetObjectPress (mapapi.h):
Код
 // Установить/Запросить признак "Не сжимать" объекта
 // Применяется ТОЛЬКО для графических объектов, имеющих внутренний код равный нулю
 // press = 1 для установки признака "Не сжимать" при сжатии карты
 //           относительного базового масштаба карты
 //         0 для сброса признака
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetObjectPress(HOBJ info, long int press);
_MAPIMP long int _MAPAPI mapGetObjectPress(HOBJ info);
 
Спасибо,
Страницы: 1
Читают тему (гостей: 1)



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

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