Страница 1 из 1
доступ к цветам слоя в ArcObjects
Добавлено: 21 сен 2011, 11:30
new_sergei
Как доступиться к цветам слоя из программы?
Например, когда мы счёлкаем мышкой по прямоугольнику в ТОС и получаем окно с выбором цвета для полигонального слоя. Как это программно сделать?
Re: доступ к цветам слоя в ArcObjects
Добавлено: 21 сен 2011, 12:32
Дмитрий Барышников
Цвет, также как тип и толщина линий и т.п., является характеристикой выбранного символа для отображения. Программно это меняется через интерфейс ISymbol и его производные
http://edndoc.esri.com/arcobjects/9.2/C ... Symbol.htm
Re: доступ к цветам слоя в ArcObjects
Добавлено: 21 сен 2011, 14:22
new_sergei
Спасибо за ответ.
А где-нибудь примеры посмотреть можно, как эти интерфейсы используются для получения цвета слоя? А то документация как-то малоинфомативна...
Re: доступ к цветам слоя в ArcObjects
Добавлено: 21 сен 2011, 14:47
Дмитрий Барышников
Re: доступ к цветам слоя в ArcObjects
Добавлено: 21 сен 2011, 15:27
new_sergei
Спасибо, вроде, то что надо. Буду разбираться...
Re: доступ к цветам слоя в ArcObjects
Добавлено: 23 сен 2011, 10:03
new_sergei
В общем, всё оказалось достаточно просто. Може, кому-то понадобится:
Код: Выделить всё
IColor getColor(ILayer layer)
{
IColor color = null;
IGeoFeatureLayer geoFeatureLayer = layer as IGeoFeatureLayer;
IFeatureRenderer featureRenderer = geoFeatureLayer.Renderer;
IFeatureClass featureClass = geoFeatureLayer.FeatureClass;
IQueryFilter queryFilter = new QueryFilterClass();
featureRenderer.PrepareFilter(featureClass, queryFilter);
IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);
IFeature feature = featureCursor.NextFeature();
ISymbol symbol = featureRenderer.get_SymbolByFeature(feature);
if (symbol is IFillSymbol)
{
IFillSymbol fillSymbol = symbol as IFillSymbol;
color = fillSymbol.Color;
}
if (symbol is IMarkerSymbol)
{
IMarkerSymbol markerSymbol = symbol as IMarkerSymbol;
color = markerSymbol.Color;
}
if (symbol is ILineSymbol)
{
ILineSymbol lineSymbol = symbol as ILineSymbol;
color = lineSymbol.Color;
}
return color;
}