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

Способ выбора векторных объектов

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Способ выбора векторных объектов, Способ выбора векторных объектов
 
Задаем способ выбора объекта StyleSelect в TMapObj SEL_LINE
Для векторного объекта он выглядит вот так:

При выделении этого объекта с помощью
aObjSelect.SelectSample(true,listname, form_main.MapFind1.MapObj.Key);
он выглядит вот так:


Как задать, в TMapObj  StyleSelect чтобы выбор векторного знака был как при его выделении?
 
Скорее всего, вам нужен режим SEL_USERFUNC, для которого нужно установить требуемые параметры отображения.
 
Gj
Цитата
Andrey Gheleznyakov написал:
Скорее всего, вам нужен режим SEL_USERFUNC, для которого нужно установить требуемые параметры отображения.
Попробовал сделать так для векторного знака.
MapObj1.Style := OS_SELECT;
MapObj1.ColorImage := clRed;
MapObj2.Style := OS_SELECT;
MapObj2.ColorImage := clRed;
MapObj1.Mode := R2_XORPEN;
MapObj2.Mode := R2_XORPEN;
MapObj1.ObjHandle := mapWhatObjectBySelect(mvMap.MapHandle,MapObj2.ObjHandle, FFrame, hselN,64,3);

R2_COPYPEN - нарисовать // Здесь никаких изменений

R2_NOT                   - нарисовать инвертированием фона // Здесь рисуется небольшой квадратик в центре векторного знака, но не предсказуемо то включается то удаляется

R2_XORPEN    - комбинация указанного цвета с текущим изображением // Здесь ничего не происходит

В результате оставил как было: линией из центра.

Это не очень хорошо, так как длина линии зависит от того, на сколько ее протянули при нанесении векторного знака.

И уж раз есть нормальный вид выделения по всему знаку, пользователю не понятно, почему при выборе только по линии.

Наверное, я что-то не понимаю.

Как нужно указать для векторного объекта MapObj1.Mode

чтобы он выбирался полностью, а не линией?

Изменено: Сергей Викторович - 23.08.2019 16:24:09
 
Групповое выделение объектов работает по своему алгоритму, а выделение конкретного объекта - по своему. При выделении отдельного объекта предполагается, что вы его захотите переместить, изменить его координаты по отдельности. Поэтому и показываются его реальные координаты, а не контуры условного знака. Как выделить по вашему варианту отвечу в ближайшее время.
 
Для настройки отображения объекта необходимо:

1.Установить вид выделения MapObj.StyleSelect := SEL_USERFUNC
2. В описании формы отображения карты объявить

 aImage          : TPAINTPARM;
 aColorImage : TColor;
 aImageObj    : TIMGOBJECT;

3. В методе инициализации формы установить

 MapObj.Image := 255;
 MapObj.Parm  := @aImageObj;
 MapObj.Mode  := R2_COPYPEN;

 aImageObj.Color  := clBlue; // нужный цвет выделения

После этого объекты будут выделяться контуром
 
Вроде сейчас выделяются все хорошо.
В описании формы и инициализации формы ничего больше не указывал.
Цвет, думаю можно и в самом компоненте указать?
 
Цвет настраивается в компоненте.
 
До конца не протестировалось. Что-то все-таки может не так.
Тему пока закрывать не будем.
Тест продолжим.
Страницы: 1
Читают тему (гостей: 1)



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

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