Suite

Changer la couleur du calque

Changer la couleur du calque


J'ai une carte avec de nombreuses classes d'entités dessus. Je souhaite utiliser des objets arc pour accéder à une couche sélectionnée (c'est-à-dire l'une des classes d'entités) sur la carte et modifier la couleur de remplissage de tous les polygones de cette classe d'entités. Je ne veux plus ajouter de fonctionnalités ou créer une nouvelle classe d'entités, il suffit de changer les couleurs de celles existantes. Je souhaite en faire une couleur saisie par l'utilisateur, je souhaite donc utiliser la boîte de dialogue des couleurs dans VS2013.

J'ai lu que IGraphicsContainer est une interface utile à implémenter, mais je ne sais pas comment faire.

ILayerDescription layerdes = (ILayerDescription)featlayer; layerdes.SelectionColor = colorDialog1.Color;

L'implémentation du code avec ces lignes m'a donné l'erreur : Impossible de convertir implicitement le type 'System.Drawing.Color' en 'ESRI.ArcGIS.Display.IColor'


Convertissez d'abord l'objet de couleur .NET de la boîte de dialogue de couleur en IColor en utilisant d'abord les composants RVB. Passer les propriétés de couleur à une méthode comme celle-ci devrait le faire :

public IColor GetColor(int pRed, int pGreen, int pBlue) { IRgbColor rgb = new RgbColorClass(); rgb.Rouge = pRouge ; rgb.Vert = pVert ; rgb.Bleu = pBleu ; renvoie (ICouleur) rgb ; }

"CS

IFeatureClass featureClass = null; IObjectClass objectClass = feature.Class; featureClass = objectClass as IFeatureClass; IGeoFeatureLayer layer = featureLayer as IGeoFeatureLayer; IFeatureRenderer featureRenderer = layer.Renderer; Isymbole = nul ; if (featureRenderer est IUniqueValueRenderer) { IUniqueValueRenderer uniqueValueRenderer = featureRenderer as IUniqueValueRenderer; symbol = uniqueValueRenderer.DefaultSymbol; } if (featureRenderer est ISimpleRenderer) { ISimpleRenderer simpleRender = featureRenderer as ISimpleRenderer; symbole = simpleRender.Symbol; }"