Стиль слоя

В этом разделе мы более подробно изучим вопросы, связанные с созданием стиля для всего слоя, а также некоторые другие свойства, которые могли бы пригодится в настройке отображения объектов на карте.

mvPenObject pen = new mvPenObject();
pen.Color = 0x333333;
pen.ctype = 2;
pen.width = 2;
mvBrushObject brush = new mvBrushObject();
brush.bgcolor = 0xffff00;
brush.fgcolor = 0x00ffff;
brush.style = 0;
brush.hatch = 2;
mvFontObject font = new mvFontObject();
font.Color = 0x00ff00;
font.fontname = "Map Symbols";
font.framecolor = 0xff0000;
font.size = 8;
mvSymbolObject symbol = new mvSymbolObject();
symbol.shape = 35;
workLayer.uniform = true;
workLayer.SetUniformStyle(pen, brush, symbol, font); 

В данном листинге рассматривается пример, в котором слою workLayer присваивается единообразный стиль. Задание стиля происходить с помощью метода SetUniformStyle, и в качестве аргумента этому методу передаются параметры карандаша, кисти и шрифта. Для этого используются классы mvPenObject, mvBrushObject, mvFontObject, mvSymbolObject. В таблице ниже будут перечислены свойства этих классов.

Наименование Тип Описание
mvPenObject
Color uint Цвет линии
Ctype ushort Идентификатор стиля линии
Width Uint Ширина линии
mvBrushObject
Bgcolor uint Цвет фона
Fgcolor uint Цвет кисти
hatch ushort
style ushort Стиль кисти
mvFontObject
angle int Угол на который будут повернуты символы
Color uint Цвет символа
fontname string Наименование шрифта
framecolor uint Цвет каймы символа
graphicUnits bool Признак отображения символа в единицах проекции
italic bool Применение курсива к символу
size int Размер шрифта
strikeout bool Применение зачеркивания
underline bool Применение подчеркивания
weight int Ширина сивола
mvSymbolObject
shape uint Код символа

Однако если даже выполнить метод SetUniformStyle слоя, то стили объектов не поменяются, пока вы не присвоите значение true свойству uniform. Именно это свойство отвечает за то, какой режим оформления будет применяться.

При оформлении слоя можно также воспользоваться такими свойствами, как отображение объектов на определенном масштабе. Реализация данной возможности представлена в листинге ниже:

workLayer.usebounds = true;
workLayer.MinScale = 2000;
workLayer.MaxScale = 15000;

В данном примере объекты слоя будут видны только при масштабе от 2000 до 15000.

Также есть очень похожее по эффекту свойство MinObjectSize. Это свойства устанавливает минимальный размер объекта в пикселях, который будет виден. Если при навигации по карте вы отдалились от объекта, и он стал меньше, чем указано в данном свойстве, то он просто не будет отображаться.