доступ к цветам слоя в ArcObjects

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
new_sergei
Участник
Сообщения: 70
Зарегистрирован: 02 апр 2009, 14:41
Репутация: 1

доступ к цветам слоя в ArcObjects

Сообщение new_sergei »

Как доступиться к цветам слоя из программы?
Например, когда мы счёлкаем мышкой по прямоугольнику в ТОС и получаем окно с выбором цвета для полигонального слоя. Как это программно сделать?
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: доступ к цветам слоя в ArcObjects

Сообщение Дмитрий Барышников »

Цвет, также как тип и толщина линий и т.п., является характеристикой выбранного символа для отображения. Программно это меняется через интерфейс ISymbol и его производные
http://edndoc.esri.com/arcobjects/9.2/C ... Symbol.htm
new_sergei
Участник
Сообщения: 70
Зарегистрирован: 02 апр 2009, 14:41
Репутация: 1

Re: доступ к цветам слоя в ArcObjects

Сообщение new_sergei »

Bishop писал(а):Цвет, также как тип и толщина линий и т.п., является характеристикой выбранного символа для отображения. Программно это меняется через интерфейс ISymbol и его производные
http://edndoc.esri.com/arcobjects/9.2/C ... Symbol.htm

Спасибо за ответ.
А где-нибудь примеры посмотреть можно, как эти интерфейсы используются для получения цвета слоя? А то документация как-то малоинфомативна...
Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: доступ к цветам слоя в ArcObjects

Сообщение Дмитрий Барышников »

Вам сюда: http://resources.esri.com/help/9.3/arcg ... erview.htm
Еще на форуме обсуждается близкая тема: viewtopic.php?f=16&t=8472
new_sergei
Участник
Сообщения: 70
Зарегистрирован: 02 апр 2009, 14:41
Репутация: 1

Re: доступ к цветам слоя в ArcObjects

Сообщение new_sergei »

Спасибо, вроде, то что надо. Буду разбираться...
new_sergei
Участник
Сообщения: 70
Зарегистрирован: 02 апр 2009, 14:41
Репутация: 1

Re: доступ к цветам слоя в ArcObjects

Сообщение 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;
        }
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей